home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Systemmonitors / AIBB / AIBB_Users_Manual < prev    next >
Text File  |  1996-09-26  |  123KB  |  2,129 lines

  1.  
  2.                                 A.I.B.B.
  3.                      Amiga Intuition Based Benchmarks
  4.            A system performance evaluation utility for the Amiga
  5.  
  6.                         Program Release Version 6.5
  7.                      Copyright 1991-1993 LaMonte Koop
  8.                            All Rights Reserved
  9.  
  10.  
  11.      This software is provided as is.  No warranty as to the performance or
  12. validity of data obtained within is stated or implied.  Bug reports and
  13. suggestions for improvement are welcomed, and every effort will be made
  14. to evaluate such reports.
  15.      AIBB is freely distributable provided no fee other than a moderate
  16. fee for disk copying charges is made for its acquirement.  It may be
  17. distributed across any electronic network, provided no fee is charged
  18. specifically for it's download.  A broad-based download fee is acceptable
  19. provided it is charged universally for all such file downloads.  All
  20. associated files included with the distribution archive of AIBB are to
  21. remain intact and unaltered.  BBS listing notices and the like may be
  22. included in the archive provided no alterations are made to the actual
  23. distribution files themselves.
  24.     This program, and all accompanying files are not public domain.  They
  25. are copyright material and may not be used for commercial purposes without
  26. permission from the author.  In most circumstances such permission will
  27. be granted, but the author must be contacted before any distribution with
  28. a commercial product.
  29.     AIBB is not shareware, as no donation or usage fee is required.
  30. However, any donations are always appreciated, and can only encourage
  31. further development of the program.  This is an ongoing project, and will
  32. continue to be so as long as interest in it is shown.
  33.  
  34.                              INTRODUCTION
  35.  
  36.      AIBB is a utility primarily designed to assist in the evaluation of
  37. system performance on a basic level.  It consists of a series of
  38. performance tests, the results of which are evaluated against other systems
  39. and the displayed for comparison purposes.  It should be noted that care
  40. must be taken when making a definitive evaluation of the performance of
  41. any system, as much more is involved in making a thorough determination
  42. than the data which can be provided by AIBB alone.
  43.      System performance evaluation, commonly referred to as "benchmarking",
  44. is the rather dubious science of trying to determine which system or
  45. system architecture is "fastest".  Unfortunately, all to often it is not
  46. completely clear what is meant by which system is "fast".
  47.      Computer systems in general usually consist of a number of devices
  48. interconnected to form a whole.  These individual devices can be on one
  49. circuit board, such as the case with certain coprocessor devices, etc...
  50. or even as seperate entities completely, physically connected in some
  51. external fashion, such as with expansion boards.  All of these devices will
  52. have certain advantages and disadvantages with respect to performance
  53. levels.  Combined together, it is generally the overall use of the system
  54. in general which determines how much of an effect is seen in these factors
  55. when observing overall system performance.  Before delving into these
  56. factors further, it is necessary to first clarify a few of the key
  57. components which are main players in the performance game.
  58.  
  59. I. The system CPU.
  60.  
  61.      The CPU ( Central Processing Unit ) of a computer is often the focus
  62. of most performance discussions.  This unit is generally responsible for the
  63. non-specific portion of any computing task.  It's duties involve general
  64. program instruction execution, and in many cases it is the device
  65. responsible for 'mastering' the system and coordinating the system effort
  66. as a whole.  Note that this is a generalization.  Systems do exists which
  67. are distributed; their CPU is not as readily defined, or consist of multiple
  68. processing units each coordinated as a whole.  However, in the context of
  69. this discussion a single primary device will be assumed.
  70.      Since the CPU of any system does often receive a great deal of the
  71. overall responsibility for program execution and task organization, it is
  72. thus a very key part in the overall performance of the system as a whole.
  73. However, often times it is considered solely as the factor which determines
  74. the "speed" a computer can perform a particular operation.  This assumption
  75. is not always valid, and must be thought out carefully.  Many other factors
  76. may affect the efficiency of the CPU itself in performing it's operations,
  77. which is why the system as a whole must be evaluated towards a particular
  78. job which it is to be given.  But before this relationship becomes clear,
  79. the other components which are factors must first be recognized.
  80.  
  81. II. Coprocessor Devices
  82.  
  83.      A coprocessor is any system processing unit which works in conjunction
  84. with the primary processor (CPU) in the actions of the system.  Such devices
  85. are often subsystem-specific, and are responsible for a particular set of
  86. computing tasks.  For example, a system may include a FPU, or Floating
  87. Point Unit to take on the task of floating point computations.  These
  88. processors are generally fine-tuned to that specific task, and thus are
  89. more efficient at it than the main processor would be if it were to do the
  90. same job.
  91.     Thus, the primary use of coprocessors is to alleviate some of the total
  92. system computing load from the CPU.  These devices may be directly coupled
  93. to the CPU, thus being closely tied to the performance of the master
  94. processor, or may be of a loosly coupled variety.  This latter type of
  95. coprocessing unit is tied to the CPU only when it requires data and
  96. information from the main processor, and in some situations may be capable
  97. of accessing and modifying system memory without going through the
  98. CPU at all.  Although this concept is not unique to coprocessors alone,
  99. it is relevant, and thus will be explained here.  Such memory accessing
  100. capabilities denote a Direct Memory Access device (DMA).  These devices
  101. do not necessarily rely on the CPU to transfer data to them, and thus are
  102. often 'decoupled' from the CPU in such a way as to have a different
  103. performance ratio from the CPU itself.  Even non-DMA devices are often
  104. afforded a level of concurrent, or simultaneous operation with the main
  105. CPU, so as to provide a more efficient method of task completion.  However,
  106. DMA devices are more closely tied with another set of subsystems to be
  107. considered when dealing with system performance.
  108.  
  109. III. Bus interfaces.
  110.  
  111.      This is often a confusing topic.  The term 'bus' is used a great deal,
  112. but all to often it is not clear what is meant by it.  As stated before,
  113. a computer system consists of a number of devices integrated together to
  114. form the whole.  A bus is, simply put, a communications pathway between
  115. devices.  Over these pathways control, address, and data signals are
  116. transferred to devices which are required to perform a portion of any
  117. particular task.  Most systems contain more than one bus in which this
  118. communication takes place.  Usually, a primary bus or combination of
  119. specific primary buses is responsible for the majority of data transfer and
  120. communications between all devices in general, with lesser buses used as
  121. specific pathways between certain devices.  Buses are often 'sized', or
  122. given in terms of bit-bandwidth.  Basically, this is a determination of the
  123. maximum size of a single data transfer across the pathway between devices.
  124. For example, an 8-bit bus can transfer an 8-bit quantity of data across
  125. it at once, while a 32-bit bus can transfer 32 bits at a single time
  126. ( Where a bit is defined as an electrical signal value representing a binary
  127. number, either 0 or 1 [ Logical FALSE or TRUE, which orientation depending
  128. upon the design of the system ] for each bit ).  Although there are other
  129. sizing factors which come into play, this is a general idea, and suitable
  130. for the discussion at hand.
  131.      As any system relies on the coordinated efforts of all its components,
  132. the efficiency and effectiveness of communication between each device is
  133. of importance when considering the overall performace of the computer.  A
  134. bus which is not up to par with the capabilities of the devices it
  135. interconnects will hinder the system while one which is capable of handling
  136. the individual components will allow for a more efficient setup.  More of
  137. this relationship will be given later after the other component members are
  138. introduced.
  139.  
  140. IV. Input and Output ( I/O ) Devices.
  141.  
  142.     This is a lose subset of devices collectively describing such units as
  143. storage media devices ( disk/tape drives, etc... ), external communications
  144. devices ( serial and parallel communications to external units ), and
  145. specific control input units, such as keyboards and other data input means.
  146. While the latter of these devices is generally not considered to be of much
  147. influence in system performance, the former members, such as storage devices,
  148. can have a great impact on performance levels.
  149.      Storage devices are in general the slowest of data transfer devices
  150. on any system.  For this reason they are often considered to be a
  151. 'bottleneck' in system performance evaluation.  However, many advances have
  152. been made in the design of such units, including the use of DMA access from
  153. storage device control units to the system main memory, which helps by
  154. alleviating the CPU's responsibility in data transfer from these devices.
  155.     Generally, I/O devices are more important to systems requiring a great
  156. deal of access to large quantities of data, or ones involved in data
  157. transfer as their primary mechanism of use.
  158.  
  159. V. System Memory.
  160.  
  161.      This subsystem has been mentioned in passing previously, but until
  162. this section not given full attention.  System memory resources also play
  163. a big part in overally system performance evaluation.  Memory can affect
  164. a system's performance in many ways.  Depending on the speed of other
  165. devices, utilizing memory subsystems which are slower (requiring the
  166. addition of 'wait states - periods of time in which the data requesting
  167. device waits for the data to be available - to properly interface to the
  168. system) can cause any data accesses to occur at a slower rate than the rest
  169. of the system could otherwise handle them.  Many memory subsystems do
  170. indeed utilize wait states, as other devices are too fast for such memory and
  171. the memory access speeds required for zero-wait-state access would make for
  172. prohibitively expensive systems.  Although a completely zero-wait state
  173. system is often not feasible, methods are available to system designers to
  174. try and reduce the overall memory latency periods.  One widely used method
  175. is the use of cache memory.
  176.  
  177. VI. Cache Memory.
  178.  
  179.      Cache memory is a memory storage medium which is usually designed for
  180. the fastest possible access to frequently used resources, usually
  181. microprocessor instructions and/or data.  This area is generally small
  182. compared to the size of an entire system memory complement, and thus can be
  183. implemented at a cost lower than that of employing very fast components for
  184. all memory.  The general operation of most memory caches is to store the
  185. most recently accessed instructions or data within the cache, then make a
  186. check for them there upon the next memory access call.  In this sense, if
  187. the instruction or data is in the cache, it can be accessed almost
  188. immediately, rather than having the processor fetch the required data from
  189. the system's main memory resources.  A cache 'hit' is the term used to
  190. indicate the processor did indeed find the data within the cache, and did
  191. not have to fetch from main memory, whereas a 'miss' denotes when the
  192. processor was forced to get the needed data or instructions from the main
  193. system memory.  When a miss occurs, the cache will usually be updated with
  194. this new data in the case it is called for again, thus keeping the data
  195. in the cache fresh.
  196.      The main theory behind such caches is that many programs spend a
  197. great deal of time within the confines of a definable event loop.
  198. Therefore, depending on the size constraints, part or all of such a loop
  199. can be held within the cache, decreasing execution time.  Caches can be
  200. found both external to the microprocessor or, increasingly, within the
  201. microprocessor itself.  They may be seperated such that they only
  202. instructions or data are held individually, or may be set up such that both
  203. types of memory accesses are kept within one cache.  There are tradeoffs to
  204. both types of design, but in general the cache in any form is a
  205. useful mechanism for increasing system performance.  One must be cautioned
  206. however, as the cache can also lead to a misrepresentation of system
  207. performance comparisons.  Benchmarking tools are often small segments of
  208. programs, and as such may be easily completely cached on systems equipped
  209. with such.  Thus, a benchmark result may not accurately depict the true
  210. system performance with a real-world application which would not be
  211. entirely housed within a such a cache.
  212.  
  213. VII. A word on clocks and clockspeed ratings.
  214.  
  215.      No mention has been made of clockspeed ratings of various devices
  216. so far because they are often misleading terms and can be taken in the
  217. wrong context in many cases.  Therefore this subject is placed in a
  218. seperate section of discussion.
  219.      "Clockspeed" ratings of devices are in actuality frequency
  220. measurements.  Almost all digital devices operating in a computer system
  221. today require some sort of timing input to coordinate their internal and
  222. external responses.  Generally, this is provided by a clock signal fed to
  223. that device, and in some cases the device itself may be responsible for
  224. the generation of additional clock outputs to other devices.
  225.      Clock frequency ratings for system components are usually today given
  226. in terms of MegaHertz ( MHz ).  This is a cyclic frequency rating indicating
  227. a the number of cycles per second an oscilating periodic signal undergoes.
  228. As an example, a rating of one MegaHertz indicates a frequency of one
  229. million cycles per second.
  230.      As indicated earlier, almost all digital system components require
  231. some form of clock input.  To see where this is important, take the case
  232. of the CPU.  Generally, instruction execution timing is stated in terms
  233. of the number of clocks a given instruction takes to complete.  A faster
  234. clock means that although an instruction takes the same number of clocks
  235. to finish, more clock input edges occur in a given time frame, and thus
  236. afford a faster response.  In this sense, faster clock rates generally
  237. indicate faster devices.  The system bus, and other devices are also
  238. managed in terms of clock inputs signals.  These may or may not be the
  239. same input as given to the CPU, or the CPU itself may control them itself.
  240. Thus, differences in clock ratings between subsystems can be a source of
  241. bottlenecking, if one faster clocked subsystem is forced to wait to
  242. synchronize with a slower subsystem in order to transfer data and control
  243. signals.
  244.     Let it not be thought that clock input frequency is the sole governing
  245. force in determining component speed, however.  In many cases, other
  246. effects cause similarly clocked devices doing the same task to finish
  247. in differing amounts of time.  One way this can happen is if one device has
  248. been enhanced in such a way as that it's internal operations are more
  249. efficient, thus requiring fewer clocks to complete. Therefore, this factor
  250. must be weighed as well as clockspeed in even single device evaluations.
  251. Device designers are constantly using both increased clock rates, as well
  252. as increased internal efficiency to advance the performance of system
  253. components.
  254.     It should be noted here that the term "bus cycle" is often confused
  255. with the concept of of clockspeed, because of the term cycle.  A bus cycle
  256. is related to the clock cycle rate, but not usually identical.  Bus cycles
  257. are the time required for the CPU or other device to access data and
  258. complete an external bus operation on it.  For example, the MC68000 CPU runs
  259. a 4 clock memory access cycle in general ( asynchronous memory transfers ),
  260. requiring 4 CPU clocks to access a given memory operand.  This is assuming
  261. a no-wait state operation.  Wait states are additional clock periods added
  262. to this cycle time in order for the data to be validly returned from the
  263. accessed device, and are placed in the bus cycle period when a device is
  264. incapable of responding to the data transfer request within the normal 4
  265. clock period.  This is only given as a particular example; other CPUs and
  266. architectures have differing bus cycle timing layouts (i.e, the MC68020,
  267. MC68030, etc... run 3 clock asynchronous bus cycles normally at zero wait
  268. states).
  269.  
  270. VIII. Putting it all together
  271.  
  272.     Many factors are involved in the evaluation of a system's performance.
  273. But just as a computer is the sum of its parts, these factors cannot be
  274. considered alone.  They must be put together and seen in entirety in order
  275. to get a whole picture.  Moreover, the intent of the system in use is
  276. important in weighting these factors towards which are more influencing
  277. for any particular task.
  278.      As an example, consider a system primarily intended for data processing
  279. tasks.  One might expect that it should have a relatively fast CPU in order
  280. to work through the data at a reasonable pace.  However, if the system's
  281. memory resources are such that they require the addition of many wait states
  282. into their accesses, then some of the effect of having a fast CPU is offset.  Even further, what type of data is being processed?
  283. Then again, if the data is of a floating-point varieny, then a very fast
  284. CPU might not necessarily be as effective as a moderately fast Floating
  285. Point coprocessor added to the system.  Another important factor might be
  286. the amount of data which needs to be continously accessed from storage
  287. devices.  In the case where a great deal is being pulled from such devices,
  288. and they are slow in providing the data to the system, then no blazingly
  289. fast component elsewhere is going to be able to make that system setup mark
  290. high in it's environment as the data is only able to get to the 'fast'
  291. devices as fast as the 'slow' storage devices can provide it.
  292.      It is obvious that care must be taken in evaluating any system's
  293. performance in order to properly take into account all factors involved.
  294. This includes determination of the usage of the system, and how individual
  295. components may affect this speed.
  296.  
  297.                           THE COMMODORE AMIGA
  298.  
  299.      The Commodore Amiga is a particularly interesting system as a whole to
  300. evaluate, as it houses a fairly complex architecture for its relative price
  301. range.  It includes aspects of multiprocessing within it's design, as well
  302. as a multitude of different system layouts to consider.  However, only
  303. subsystems relevant to the type of testing performed by AIBB will be
  304. considered here, these being the 'core' elements of the system, discounting
  305. I/O devices and external communications units.  Of primary interest in this
  306. discussion is the system CPU, coprocessing devices, and memory subsystems of
  307. the Amiga.
  308.  
  309.                             I. System Layout
  310.  
  311. A. Primary system processors.
  312.  
  313.       The Motorola M68000 series of microprocessors is utilized as the
  314. main CPU in all Amigas in production today.  Various models of Amigas
  315. exist which utilize all of the primary variants of this microprocessor
  316. family, with third-party add-on accelerator units providing an upgrade
  317. path for many systems originally borne with earlier 68000 series CPUs.
  318. An overview of the various M68000 microprocessors and their main uses in
  319. Amigas is as follows:
  320.  
  321.       MC68000/MC68HC000
  322.               The MC68000 was the CPU the Amiga was born with, utilized in
  323.           the Amiga 1000 first, and subsequently in the A500 and A2000
  324.           stock system models.  This CPU is characterized by a 24-bit
  325.           address bus, giving it a 16 megabyte addressing capability, and
  326.           a 16-bit data bus.  This microprocessor is classified as being
  327.           a 16/32 bit device.  Its external data pathways are 16 bits
  328.           in size, while internally it supports a 32-bit model by
  329.           containing full 32-bit register implementations.
  330.               In all stock Amiga models utilizing this CPU, the device is
  331.           clocked at the rate of the system bus, approximately 7.15 MHz for
  332.           NTSC based systems, and about 7.09 MHz for PAL systems.  Certain
  333.           add-on accelerators do exist which are built around this CPU,
  334.           replacing the stock motherboard component with an add-on board
  335.           which runs the CPU at 14.28 MHz, or in some designs, 16.0 MHz.
  336.               Recently, the MC68HC000 variant of the 68000 has been
  337.           introduced into the Amiga market on an accelerator board.  The
  338.           68HC000 is a standard 68000, but manufactured in CMOS technology.
  339.           This design of the part allows it to run at higher clock rates,
  340.           and with less power consumption than the standard 68000.  Aside
  341.           from this, the 68HC000 is identical to the 68000 stock device.
  342.  
  343.       MC68010
  344.               This CPU has not seen wide use in Amiga systems, although
  345.           it can be found occasionally.  The MC68010 is pin-compatible
  346.           with the MC68000, allowing for simple drop-in replacement in any
  347.           system utilizing the latter.  Most systems do not see a
  348.           tremendous performance boost while utilizing the 68010 as it's
  349.           improvements over the 68000 are not a tremendous leap.
  350.               The MC68010 includes various internal microcode enhancements
  351.           over the MC68000, allowing for faster instruction execution in
  352.           some circumstances, as well as the addition of a specialized
  353.           programmer-transparent 'loop mode' which enhances CPU performance
  354.           in tight program loops by allowing said loops to be latched into
  355.           the CPU instruction prefetch queue where external bus cycles are
  356.           not necessary for the loop code proper.  As indicated earlier
  357.           though, this CPU has not seen a great deal of use in Amiga
  358.           systems, and is mostly found in circumstances where owners of
  359.           68000-based Amigas have chosen to replace their stock CPUs with
  360.           this device directly.
  361.  
  362.       MC68020
  363.               A major upgrade to the line, the MC68020 includes a great
  364.           many advances over the previous members of this microprocessor
  365.           family.  The MC68020 is the first fully 32-bit capable
  366.           microprocessor of the M68000 series, incorporating full 32-bit
  367.           address and data buses, as well as a 256 byte instruction cache,
  368.           in order to keep program code sections used often within a
  369.           fast-access medium.  The MC68020 is a major step above the
  370.           MC68000 or MC68010, with an architecture more capable of handling
  371.           larger demands upon its resources.
  372.               The 68020 is utilized in earlier acclerated Amiga systems,
  373.           including as the main processing engine of the first A2500 series
  374.           of machines which housed the CBM A2620 accelerator unit.  Many
  375.           acclerators using this CPU were produced by third-party
  376.           manufacturers, including low-cost units found in some A500 units,
  377.           as well as in the A2000 line.  In most designs, this CPU is
  378.           clocked at approximately 14.28 - 16.0 MHz, with a few of the
  379.           lower-cost accelerators running the CPU at the ~7.15 MHz (NTSC) /
  380.           ~7.09 MHz (PAL) system clock of the Amiga.
  381.  
  382.       MC68030
  383.               Improvements were made to the MC68020, including the addition
  384.           of a 256-byte data cache to complement the existing instruction
  385.           cache, and the inclusion of an on-board memory management unit
  386.           ( MMU ) in order to produce the MC68030.  Additional improvements
  387.           exist internally to this CPU over the MC68020 to give it a stand
  388.           against its generation of competing microprocessors.  The 68030
  389.           can be viewed as an incremental improvement to the 68020, adding
  390.           additional features but not being a tremendous architectural
  391.           change from its predecessor.
  392.               The MC68030 is found as the accelerated CPU of the later
  393.           A2500 series of Amigas, as well as being the main processor of
  394.           the Amiga 3000 line.  This microprocessor has also been widely
  395.           implemented in accelerator units for all models of Amigas and is
  396.           used at a wide variety of clock frequencies ranging from 16.0 MHz
  397.           to 50.0 MHz.
  398.  
  399.       MC68040
  400.               Currently found in a variety of accelerators, and as the
  401.           main processor for the A4000/040, the 68040 is a generation
  402.           leap over the previous MC68030 model and incorporates a great
  403.           many advances over all previous models in this series of
  404.           microprocessors. Both instruction and data caches found in the
  405.           MC68030 are present, but their size has been increased to 4K
  406.           bytes each.  In addition, the data cache of this processor now
  407.           supports a 'CopyBack' mode of operation, providing for faster
  408.           data access times by allowing memory writes to be deferred to the
  409.           cache until an update of memory contents is absolutely required.
  410.           On-chip MMUs exist for both data and instruction streams within
  411.           the CPU, and the internal pipelines have been further optimized
  412.           for increased performance.  A subset Floating Point Unit (FPU) is
  413.           also included on-chip for floating-point calculations.
  414.               The 68040 is at present found in only 25 and 33 MHz rated
  415.           varieties at this writing, though this will likely change in the
  416.           future.  Unfortunately, it does seem to be a developing trend in
  417.           the Amiga community to somewhat overclock the 68040, an action
  418.           neither sanctioned nor recommended by Motorola.
  419.  
  420.     There are several variants of these primary microprocessor models in
  421. production.  The newest such variants are the Motorola "EC" series of
  422. M680x0 parts, and "LC" series of MC68040 parts.  The "EC" ( Embedded
  423. Controller ) series are characterised by changes from the standard part
  424. ranging from simple packaging to the removal of certain internal features.
  425. This latter option is what has been taken with the MC68020, MC68EC030, and
  426. MC68EC040 parts.  The MC68020 is given by a 24 bit address range, as opposed
  427. to the normal 32 bit address range of the standard 68020 part.  Aside from
  428. this difference, it is identical to the 68020.  The MC68EC030 is
  429. characterized by the lack of an on-chip MMU.  It functions identically to
  430. the standard MC68030 with this exception.  The MC68EC040 and MC68LC040
  431. are similar to each other except that the on-board MMUs of the normal 68040
  432. are preserved, in the LC part, with just the FPU not functional on the unit,
  433. while the EC part removes both the FPU and MMU units from the chip.
  434.     At this point it is of interest to bring up a point of common interest
  435. with accelerated Amiga systems; that of asynchronous vs. synchronous
  436. accelerator designs.
  437.      Synchronous designs were the first accelerators to appear for the
  438. Amiga.  These are generally found in the MC68020 based accelerator units,
  439. and also in many of the low-cost MC68000-based accelerators.  A synchronous
  440. design is one in which the devices present on the accelerator are clocked
  441. at a rate which is absolutely synchronized to the main system clock signals.
  442. For the A500 and A2000, this means the clock rate of such accelerators
  443. must be an even multiple of the ~7.15MHz (NTSC) / ~7.09 MHZ (PAL) system
  444. clock rate.  Because of the difficulties involved in maintaining
  445. synchronicity at high clock rates, generally these accelerator units are
  446. restricted to about 14 MHz, or double the system clock rate.
  447.      Asynchronous designs, on the other hand, have no such restrictions.
  448. These units are somewhat more difficult to design, but in general the
  449. accelerator components may be operated at nearly any clock input, provided
  450. they are themselves capable of performing at the given frequency.  This
  451. operation mode is what all MC68030-based accelerator designs for the A500
  452. and A2000  utilize, thus giving the wide range of clock rates found in these
  453. accelerators.
  454.      It must be noted however that an ambiguity exists in the terms
  455. synchronous and asyncronous.  The 680x0 microprocessor series is characterized
  456. by normally running asyncronous bus cycles.  This simply means the processor
  457. initiates a read/write action, and it is up to the external device to terminate
  458. ( acknowledge ) the cycle, thus completing it.  This behavior is NOT related
  459. to accelerator design as might be confused by the use of the same terms.  In
  460. accelerator design terms, asyncronous and synchronous are designating how the
  461. accelerator state machine relates to the main system clock, and NOT how
  462. individual bus cycles are run by the CPU in general.
  463.  
  464.      Many accelerated Amigas also utilize an FPU for floating-point math
  465. intensive operations.  The main FPUs in use by the various Amigas available,
  466. and the add-on accelerators in use on the Amiga, are manufactured by
  467. Motorola as well, either as seperate coprocessor devices, or as in the
  468. case of the MC68040 are embedded within the main CPU itself.  An overview
  469. of the various FPUs in use is given below:
  470.  
  471.       MC68881
  472.              This is a seperate floating point coprocessor device
  473.          which provides fast hardware-supported floating-point operations
  474.          to any system software which supports it's use.  This unit does
  475.          provide a certain level of concurrancy, giving it the abililty to
  476.          perform certain instructions at the same time the main CPU is
  477.          performing other operations.  Support for this coprocessor is
  478.          provided either by a built-in hardware microcode interface, found
  479.          on the MC68020 and MC68030, or by software trap interfacing for
  480.          the MC68000 and MC68010.  The latter method is used in but a few
  481.          early Amiga accelerator boards, while the preferred interface,
  482.          that to the MC68020 or MC68030, is supported by virtually all
  483.          accelerators utilizing those CPUs.
  484.              The MC68881 may be run asynchronous to the CPU clock input,
  485.          meaning it need not run at the same clockspeed as the CPU itself.
  486.          Thus, a faster FPU may be used to give somewhat of a boost to
  487.          floating-point operations.  The MC68881s in use in Amigas today
  488.          are found mostly running at clock frequencies ranging from
  489.          12-20 MHz.
  490.  
  491.       MC68882
  492.               The successor to the MC68881, this unit incorporates the
  493.          same interface and operations as the former device, but with
  494.          certain internal enhancements.  The microcode for many operations
  495.          has been optimized for faster response, and support for further
  496.          multiple floating point instruction concurrency was added.  In
  497.          general this FPU will perform at about 1.5 times the speed of the
  498.          MC68881 at the same clock input frequency.  The MC68882 is
  499.          primarily operated at clock rates of 12-50 MHz, depending on the
  500.          accelerator or system utilizing it.
  501.  
  502.       MC68040
  503.               The MC68040 CPU incorporates an FPU within the processor
  504.          itself.  This FPU unit is a basic subset FPU of the MC68882,
  505.          eliminating mainly the transcendental (sin, cos, etc...), and
  506.          complex functions found in microcode on the former.  Nevertheless,
  507.          the optimized nature of the existing FPU instructions provided
  508.          allow for emulation of the missing functions in such a way as to
  509.          give faster execution than the MC68882 for almost all operations.
  510.  
  511. B. The custom chips.
  512.  
  513.      In addition to the main processing units, the Amiga also incorporates
  514. a number of custom designed devices, known collectively as the Amiga's
  515. custom chips.  Their primary purposes are varied, but they are generally
  516. in charge of such things as DMA access and arbitration to various memory
  517. areas, and graphics/sound generation and effects.  These custom chips are:
  518.  
  519.       Agnus/Alice
  520.               Probably the most talked about custom chip, Agnus is found
  521.          in a number of flavors, ranging from the original device, to the
  522.          'super' version found in the A3000.  Aside from minor internal
  523.          changes, the main differences between these different versions is
  524.          the amount of memory they can directly access.  Agnus is
  525.          responsible for for control of 25 system DMA channels, generation
  526.          of all system clocks in the A500 and A2000, and provides control
  527.          and addressing for CHIP RAM, which is the memory accessable by
  528.          these custom chips.  The size of this memory region is determined
  529.          by the Agnus in use, and is either 512 KBytes, 1 Megabyte, or
  530.          2 Megabytes in range.  As the custom chips are utilized primarily
  531.          for graphics and sound coprocessing tasks, all such data must be
  532.          located in this CHIP RAM area.
  533.              Agnus also contains within it what is referred to as a
  534.          Blitter.  This internal device is a fast memory copy unit designed
  535.          to move areas of memory as efficiently as possible, and has the
  536.          capability to also perform specific logic manipulations to the
  537.          data in the process.
  538.              Finally, Agnus also contains Copper.  Copper is the system's
  539.          Display Synchronized Coprocessor.  This device assists with screen
  540.          refreshes and display building, and is a major factor in the
  541.          Amiga's graphics engine.
  542.              Alice is the successor to Agnus, and part of the AGA graphics
  543.          chip found in the latest Amiga models.  Containing the same 16 bit
  544.          data bus interface to CHIP RAM, Alice is nonetheless capable of
  545.          directing 32-bit fetches to RAM, as well as take advantage of
  546.          double CAS page mode cycles, providing for a larger bandwidth to
  547.          memory, and increased performance.
  548.  
  549.       Denise/Lisa
  550.              The Denise custom chip is primarily responsible for color
  551.          generation and display resolution modes.  This chip also contains
  552.          the eight hardware display sprite controllers used in the system.
  553.              Lisa, part of the AGA custom chip set, is the replacement
  554.          for the aging Denise.  This new chip is implemented in full CMOS
  555.          technology, and incorporates the ability to handle up to 24-bit
  556.          RGB video, as well as do double 32-bit fetch cycles to memory
  557.          which increase its data bandwidth rate to 64 bits per cycle, or
  558.          four times that of the earlier Denise chip.
  559.  
  560.       Paula
  561.              Paula is a more or less diverse device.  It controls sound
  562.          generation, contains the system floppy disk control circuitry,
  563.          and houses the I/O control circuitry for the disks as well as
  564.          external control ports.  Paula also contains an interrupt control
  565.          system for various system operations.
  566.  
  567.     The custom chips of the Amiga and the coprocessors associated with
  568. them are designed in such a way as to alleviate the main CPU of many
  569. intensive tasks, such as graphics operations and sound generation.  They
  570. support a concurrent level of operation, allowing the main CPU to continue
  571. with non-specific computing tasks while the custom chips handle their
  572. respective operations.  The devices are capable of DMAing directly into
  573. the CHIP RAM area, freeing the CPU completely from task responsibility
  574. in those respects.
  575.  
  576. Bus layout.
  577.  
  578.     The seperation of operations and the definition of the CHIP RAM memory
  579. area is further accentuated by the fact that the Amiga utilizes two buses
  580. along these lines.  The CHIP RAM bus is a seperate entity from the main bus
  581. utilized by the CPU and other devices, but is accessable by the CPU as
  582. well.  The seperation can even be greater given the fact that the CHIP RAM
  583. bus can be decoupled from the CPU bus completely under certain
  584. circumstances.
  585.     The CHIP RAM bus is primarily utilized by the custom chips, with the
  586. CPU being given access to it on an interleaved cycle basis ( every other
  587. bus cycle can be a CPU access cycle ).   The custom chips have priority in
  588. this domain, and this is where the idea of bus contention arises.  If a
  589. great deal of bus activity is in progress by the custom chips, they may
  590. 'lock out' the CPU, forcing it to wait if it needs data or information
  591. from this bus' memory space.  This is where the touted 'FAST RAM' comes in.
  592.     FAST RAM is memory not on the CHIP RAM bus, but rather on the main
  593. system bus or expansion bus.  This memory is not accessable by the custom
  594. chips, and thus no contention for it's access occurs between them and
  595. the CPU.  Due to the seperate nature of the buses, it is possible for the
  596. CPU to be processing instructions and data utilizing FAST RAM while the
  597. custom chips are concurrently operating in the CHIP RAM area.  This
  598. parallel operational status allows the Amiga to perform a great variety
  599. of graphics operations in such a way as to done on a bus which is not
  600. operated at a great speed.
  601.     The CHIP RAM bus on all Amigas is operated at a clock frequency of
  602. approximately 7.15 MHz.  On the A500 and A2000, this is the main system
  603. clock frequency.  For those machines, the CHIP RAM bus is accessed via
  604. a 16-bit wide bus port, while on the later A3000/A4000 systems the bus port
  605. for external accesses is a full 32-bit interface, affording larger data
  606. transfer sizes at the same clock rate.
  607.     Because of bus contention, a system containing only CHIP RAM may very
  608. well have slower operations than one which contains FAST RAM as well.  The
  609. FAST RAM equipped machine will be capable of having the CPU operate
  610. concurrently on information on that bus, while the custom chips operate on
  611. their tasks.  The CHIP RAM only system is going to have circumstances where
  612. the CPU will be forced to wait to access data, as the custom chips may be
  613. utilizing the CHIP RAM bus heavily.
  614.     FAST RAM in the A500 and A2000 series of machines can be located on
  615. many devices, from standard expansion card extenders which exist on the
  616. system expansion bus and operate at the system clock frequency, to other
  617. methods of RAM addition which have been devised that do not directly use
  618. the common Amiga expansion routes.  FAST RAM located along the standard
  619. expansion backplane on these systems operates at the system bus clock
  620. rate ( 7.15 MHz ), and is accessed accordingly.  On A3000 machines, FAST
  621. RAM is generally located on the system motherboard, and is accessed
  622. according to the system clock rate of those machines, which on stock models
  623. may be 16 or 25 MHz.
  624.     It should be noted that some systems utilizing only 512K of CHIP RAM
  625. have in their memory lists a region of RAM which is called FAST, but in
  626. fact is on the same bus as CHIP RAM.  This is generally the memory found
  627. on the A2000 motherboard for 512K CHIP RAM machines, or on the A501
  628. expansion card for A500s.  This memory will suffer from the same bus
  629. contention that CHIP RAM is exposed to, and thus it is generally advisable
  630. to be sure that program code is not put here unless it has to be ( e.g, if
  631. true FAST RAM exists, it should be prioritized ).  The utility program
  632. "FastMemFirst" supplied by CBM is meant to do just that.
  633.     FAST RAM located within the domain of an accelerator is not limited to
  634. the system bus clock rate.  It may be operated at such, but in general can
  635. be accessed at a clock rate much different, usually at the accelerator's
  636. CPU clock.  Systems utilizing accelerators benefit from this setup, as
  637. an accelerator does not change the system clock rate, and therefore in
  638. order for an accelerator's CPU to use system resources, it has to
  639. synchronize with the system clock, and may even have to contend with a
  640. narrower bus interface.  Such is often the case on the A500/A600 or A2000
  641. when utilizing MC68020 or MC68030 based accelerators, which are best suited
  642. for 32-bit bus ports.  Since those processors take a performance hit when
  643. accessing narrower bus ports, as well as a hit from the possibly slower
  644. clock rate of the system bus, accelerators often are equipped with their
  645. own RAM resources which is designed to operate at the CPU clock frequency
  646. and utilizes a more efficient bus port size ( 32-bit ).  The case with the
  647. A3000/A4000 is slightly different.
  648.     The A3000 and A4000 utilize a 32-bit bus for their memory resources
  649. already, therefore this is not a problem with accelerators for those
  650. machines.  However, the bus on the A3000/A4000 is clocked at 16 or 25 MHz
  651. ( depending on the model ), and if a faster CPU is used in an accelerator
  652. it may be profitable for the unit to contain it's own RAM resources in order
  653. to lower access delays to a minimum.  The A3000/A4000 does include
  654. provisions for an accelerator to supply it's own clock signal to the
  655. motherboard, but as of this writing, this has not been employed by any
  656. devices.
  657.  
  658.                         II. Summary and overview.
  659.  
  660.     It can be seen from all this that there is a great deal to be visualized
  661. when trying to make a comparison of system performance levels.  A great
  662. many factors come into play when trying to determine just what system is
  663. best and quickest for the task at hand.  Various factors can determine how
  664. efficient an accelerator is on a particular system, or how efficient a
  665. system is in general.  Interface efficiency, accelerator or general
  666. system design, and intended use all play a part in determining which setup
  667. is the 'winner' in the speed race.  Indeed, there may not be a winner,
  668. except in a particular task category, and this must always be remembered.
  669.     No benchmark or performance test can possibly hope to test all of these
  670. categories, and the others which also play roles.  Thus, it is necessary
  671. to utilize data obtained from any set of benchmarks as only a portion of
  672. the picture to be analyzed, and not as a rock-solid performance indication.
  673. System design has improved to the point where many benchmarks can be fooled
  674. into giving higher performance measures than would be found in any typical
  675. application.  As benchmarks are typically small pieces of code, they must
  676. be evaluated as such.  They can indeed give clues as to the performance
  677. level of a system, but certainly not a definitive answer.
  678.  
  679.  
  680.                            OVERVIEW OF AIBB
  681.  
  682.     Amiga Intuition Based Benchmarks ( AIBB ) is a program primarily
  683. designed to test various aspects of system performance at the CPU and
  684. accompanying device level.  It does not test such things as I/O efficiency
  685. and storage media data retrieval and placement efficiency ( storage I/O ).
  686. The tests contained within AIBB by no means give a complete picture of any
  687. system's performance level, but does provide some basic information and
  688. comparison data for a variety of systems.
  689.     AIBB is divided into a number of sections.  Several are simply
  690. informative in nature and are designed to give a better picture of the
  691. system conditions during the actual testing phases.  Other portions of the
  692. program allow for a certain measure of system control, giving the ability
  693. to somewhat modify the parameters under which tests are performed.  It is
  694. important to try to pay attention to the parameters and information given
  695. by AIBB, as they may in turn give important clues as to the nature of the
  696. test results reported.
  697.     AIBB is set up to allow a user to perform a number of tests on the host
  698. system, and compare those results against a series of other systems.
  699. Comparison data is given in both graphical and numerical form.  AIBB also
  700. allows the entire series of tests to be performed, and the results and
  701. system state stored as a "load module" which may later be loaded and used
  702. as one of the comparison systems against which a possibly different host
  703. will be checked against.  Tests may be manipulated by code type and system
  704. situation in order to allow a better picture of the system performance
  705. criteria being looked at.
  706.  
  707. I. System Requirements.
  708.  
  709.     AIBB may be run on any Amiga system utilizing AmigaOS 1.3 or greater,
  710. but it should be noted that the tests performed are designed primarily for
  711. accelerated systems or fast systems in general.  Therefore, tests may be
  712. exceedingly long on Amigas utilizing slower CPU units, and the general
  713. speed of the program may seem a bit slow on such platforms.
  714.     Users of MC68040 based systems must be utilizing AmigaOS 2.0 or
  715. greater in order to run AIBB.  Modified versions of AmigaOS 1.3 do exist
  716. which are patched to somewhat deal with the problems of that OS version
  717. and the 68040, but as per CBM's official stance, this is not a supported
  718. method of utilizing the 68040 as a system processor.  For this reason,
  719. AIBB will abort if it detects a 68040 and the system OS version is less
  720. than 2.0.
  721.     AmigaOS 1.3 users with accelerators must be sure to be using the latest
  722. SetPatch routines for those OS versions. ( SetPatch v1.34 )  SetPatch
  723. corrects a problem with FPU code with those OS versions, and is necessary
  724. for proper operation of AIBB.  AmigaOS 2.0x also is shipped with a SetPatch
  725. routine which should be executed in the Startup-Sequence to assure any
  726. future OS bug fixes and corrections will be applied.
  727.     When AIBB first starts up, it performs a series of system tests to
  728. determine the type of system it is being operated on, ascertaining such
  729. things as CPU type, FPU type, MMU type, etc.  Unfortunately, some low-cost
  730. accelerator units may experience a problem here...most notably in the
  731. MMU type tests.
  732.     The MMU on systems which house the unit as a seperate device ( such
  733. as 68020 + 688851 systems ) is treated by the CPU as an external
  734. coprocessor...much like the FPU on such systems is.  The MMU or FPU in
  735. such a setup responds to an instruction when the instruction coprocessor
  736. ID field matches the hardware set ID of the device.  This allows more than
  737. one coprocessor in a system ( such as both an MMU and FPU ).  The ID
  738. decoding mechanism is handled in hardware...and this is where the problem
  739. arises with some accelerators.  Such accelerators do not fully decode the
  740. coprocessor ID, and thus the FPU may respond as an MMU, etc.  Most of the
  741. time this causes no problems to the system, but it does for AIBB which is
  742. looking for these devices.  Unfortunately, AIBB will most likely not work
  743. on systems afflicted with this until the hardware bug is corrected by the
  744. manufacturer.  It should be noted that most systems/accelerators do NOT
  745. have this problem, but a few may show up from time to time.
  746.     This program does not absolutely have any absolute requirements other
  747. than those previously mentioned in order to be operated, but it does have
  748. some suggested configurations.  In order to utilize the program's file
  749. functions, AIBB must be able to find one of the following shared libraries
  750. in the libs: directory on your system disk:
  751.  
  752.           1.  asl.library       ( AmigaOS 2.0 systems only )
  753.           2.  kd_freq.library   ( library version 3.0 or greater )
  754.           3.  req.library       ( library version 2.0 or greater )
  755.           4.  reqtools.library
  756.  
  757. AIBB will search for these libraries in this order, and utilize the first
  758. one found.  Primarily, the library need is for file requester utilizing
  759. functions within AIBB.  AIBB will still operate without finding one of
  760. these libraries, but it will block access to the file-requesting functions
  761. it normally provides.
  762.     This will be the last version of AIBB to include support for AmigaOS
  763. versions below 2.0.  At this time, more effort is being placed into
  764. compatibility with later AmigaOS generations, and this will be the mode
  765. of support emphasized.
  766.  
  767. Getting Started.
  768.  
  769.     AIBB may be started from either the CLI/Shell or WorkBench.  If the
  770. latter method is used, it is imperative that the icon used ( if not the
  771. supplied one ) have it's STACK value set to 20000.  AIBB invocations from
  772. the CLI/Shell have no special requirements or stack settings as AIBB will
  773. perform the necessary set-up in this environment.  It is recommended that
  774. careful attention be paid to the existing system memory resources before
  775. starting AIBB.  AIBB is quite large, and if you wish it and it's test code
  776. to be loaded into a certain memory medium ( generally a fast medium if
  777. possible ), then enough contiguous memory must exist in that memory region.
  778. AIBB will give information as to where exactly it's code is located, but
  779. if you are interested in loading AIBB in a certain region, this must be
  780. taken into account BEFORE starting the program.
  781.     Several options are available from the command line when invoking AIBB
  782. from the CLI/Shell, or equivalently through the icon TOOLTYPES array when
  783. starting from the WorkBench. These options are listed below:
  784.  
  785. CLI/Shell Options:  These options must be preceded by a dash ('-'), with
  786.                     no spaces between the dash and the option.  The
  787.                     argument following the option is listed below as <arg>
  788.                     and should be formatted as such: -<option><arg>, such
  789.                     as -m0.
  790.  
  791.           -c<arg>:  Sets the CPU type AIBB will use for the host system.
  792.                     Available arguments are:
  793.  
  794.                                  0  :  68000 CPU
  795.                                  1  :  68010 CPU
  796.                                  2  :  68020 CPU
  797.                                  3  :  68EC020 CPU
  798.                                  4  :  68030 CPU
  799.                                  5  :  68EC030 CPU
  800.                                  7  :  68040 CPU
  801.                                  8  :  68EC040 CPU
  802.                                  9  :  68LC040 CPU
  803.  
  804.                     Any other value will be ignored.
  805.  
  806.           -f<arg>:  Sets the FPU type AIBB will use for the host system.
  807.                     Available arguments are:
  808.  
  809.                                  0  :  NO FPU
  810.                                  1  :  68881 FPU
  811.                                  2  :  68882 FPU
  812.                                  3  :  68040 FPU (Internal)
  813.  
  814.                     Any other value will be ignored.
  815.  
  816.           -m<arg>   Sets the MMU type AIBB will use for the host system.
  817.                     Available arguments are:
  818.  
  819.                                  0  :  NO MMU
  820.                                  1  :  68851 MMU
  821.                                  4  :  68030 MMU (Internal)
  822.                                  7  :  68040 MMU (Internal)
  823.  
  824.                      Other values will be ignored.
  825.  
  826.           -cs<arg>   Sets the CPU clockspeed aibb will show/use for the
  827.                      host system.  The argument field should be a valid
  828.                      clockspeed rating, such as 25.0 for a 25MHz rating.
  829.  
  830.           -fs<arg>   Sets the FPU clockspeed aibb will show/use for the
  831.                      host system.  The argument field should be a valid
  832.                      clockspeed rating, such as 25.0 for a 25MHz rating.
  833.  
  834.           -b         This option accepts no arguments.  Supplying it on
  835.                      the command line turns off the 'Click' sound AIBB
  836.                      makes when a gadget is pressed.
  837.  
  838. WorkBench options:  These options mimic the ones given above for the
  839.                     CLI/Shell, with the exception that they are contained
  840.                     within AIBB's icon TOOLTYPES field.  The options
  841.                     available are:
  842.  
  843.           CPU=<arg>:
  844.                     Sets the CPU type AIBB will use for the host system.
  845.                     The CPU type may be specified as:
  846.  
  847.                                  68000
  848.                                  68010
  849.                                  68020
  850.                                  68EC020
  851.                                  68030
  852.                                  68040
  853.                                  68EC030
  854.                                  68EC040
  855.  
  856.                     For example, to specifiy a 68EC030 CPU, the option
  857.                     to give would be CPU=68EC030.
  858.  
  859.           FPU=<arg>:
  860.                     Sets the FPU type AIBB will use for the host system.
  861.                     The FPU type may be specified as:
  862.  
  863.                                  NONE
  864.                                  68881
  865.                                  68882
  866.                                  68040
  867.  
  868.                     For example, to specifiy no FPU, the option to give
  869.                     would be FPU=NONE.
  870.  
  871.           MMU=<arg>:
  872.                     Sets the MMU type AIBB will use for the host system.
  873.                     The MMU type may be specified as:
  874.  
  875.                                  NONE
  876.                                  68851
  877.                                  68030
  878.                                  68040
  879.  
  880.                     For example, to specifiy no MMU, the option to give
  881.                     would be MMU=NONE.
  882.  
  883.           CPUSPEED=<arg>:
  884.                     Sets the CPU clockspeed aibb will show/use for the
  885.                     host system.  The argument field should be a valid
  886.                     clockspeed rating, such as 25.0 for a 25MHz rating.
  887.                     For example: CPUSPEED=16.0 would set a CPU speed of
  888.                     16.0MHz which AIBB will then use internally.
  889.  
  890.           FPUSPEED=<arg>:
  891.                     Sets the CPU clockspeed aibb will show/use for the
  892.                     host system.  The argument field should be a valid
  893.                     clockspeed rating, such as 25.0 for a 25MHz rating.
  894.                     For example: CPUSPEED=16.0 would set a CPU speed of
  895.                     16.0MHz which AIBB will then use internally.
  896.  
  897.           NOBUTTONBEEP:
  898.                     Using this tooltype option turns off the click sound
  899.                     AIBB uses when a gadget is depressed.
  900.  
  901. IMPORTANT:
  902.     The CPU/FPU/MMU options given above are for special circumstances only!
  903. Normally, AIBB will determine all of the above independently, and tampering
  904. with these values will be detrimental.  However, these options can come in
  905. very handy under certain circumstances.
  906.     Some accelerator models on the market suffer from a hardware bug:  They
  907. do not properly decode the coprocessor ID in hardware for systems with
  908. such devices.  The end result is attempted accesses to an MMU may end up
  909. with the FPU on the system erroneously responding instead.  Now, since AIBB
  910. relies on an 'exception' occuring when no MMU exists in its efforts to ID
  911. the system MMU, this becomes a problem if the FPU responds instead.  The
  912. result of this is that AIBB may fail to function properly on such systems,
  913. and this is where the above options come in.
  914.     When the options above are specified, AIBB will take them at face value.
  915. No further testing of the system is attempted.  Therefore, by specifying
  916. various values, the problem above can be circumvented as AIBB will not
  917. perform the internal checks which may cause errors.  If you suspect your
  918. system is one with such a hardware bug, try manually setting the system
  919. CPU, FPU, and MMU types to see if this cures the problem.  You should not
  920. have to set the device clockspeed ratings manually, as AIBB will still
  921. be able to perform this.
  922.  
  923.                         ------------------------
  924.  
  925.     ONCE AGAIN, do not take the CPU/FPU/MMU command options lightly!  If
  926. false values are given, it may very well result in program errors within
  927. AIBB, or possibly a system failure.  Under most circumstances, you will NOT
  928. need to use these options AT ALL, and can allow AIBB itself to determine the
  929. system configuration.
  930.  
  931.                         ------------------------
  932.  
  933.     Under some circumstances, AIBB may request that the processor type
  934. be supplied manually by the user.  This is primarily in situation where
  935. AIBB can't positively determine whether a 68EC030 or 68030 exists, or in
  936. the case of 68LC040/68EC040 determination.  If AIBB requests this
  937. information, please supply the correct processor type, as failing to do
  938. so can result in serious problems on occasion.  This is especially true
  939. in the case of the 68EC030 vs. the standard 68030.  AIBB may not be able
  940. to determine the exact processor in this case if for some reason the
  941. MMU enabled bit is set in the processor's Translation Control ( TC )
  942. register.  Both the 68EC030 and 68030 have valid TC registers, even if
  943. with the EC part the MMU is non-functional.  Since AIBB attempts to
  944. parse MMU tables if the MMU is active (for locating system structures),
  945. fooling AIBB into thinking that an EC part is a standard 68030 in the
  946. case of a seemingly active MMU can result in AIBB attempting to parse
  947. a non-existant MMU table. This can be very problematic, and in extreme
  948. cases result in a system failure.
  949.  
  950.                         ------------------------
  951.  
  952.     Once AIBB loads, a few moments may be needed by the program while
  953. it evaluates the system it is being operated on, the exact time depending
  954. on the relative speed of the host system in question.  A screen displaying
  955. a message of that sort will be given while this is in progress.  Following
  956. this evaluation, you will be presented with AIBB's main program screen.
  957.  
  958.  
  959.                       III. Operation/Features of AIBB
  960.  
  961. A. Main Screen Description
  962.  
  963.     AIBB's primary screen consists of several informational areas designed
  964. to provide information about test operations and basic system information.
  965. These areas are divided up as follows:
  966.  
  967.     Performance Graph
  968.             The performance graph is a bar graph display of the comparisons
  969.         made after each test is performed.  Ratings are given in reference
  970.         to the base machine for comparisons, with the highest performing
  971.         system having it's bar displayed in RED, while all others are
  972.         in YELLOW.  Note that although numerically two machines may have
  973.         the same results out to 2 decimal places, AIBB may still show one
  974.         in red.  This is due to rounding, and the fact that the one
  975.         highlighted machine does in fact have a higher rating if a few
  976.         more decimal places were shown numerically.  However, such small
  977.         quantities should not be taken literally, as far too many variables
  978.         exist to use such values in accurate comparisons.
  979.  
  980.     Test Result/Information
  981.             This area provides several pieces of data.  First, it gives the
  982.         name of the test last whose information is being displayed
  983.         currently.  The numerical result of the test performed is given
  984.         here, as well as the memory node reference number where the test
  985.         code, and possibly any test data is located.  To reference these
  986.         node numbers, please see the section on the "System Information
  987.         Display".
  988.  
  989.     Base Machine Indication
  990.             Below the Test Result/Information area is a small reference
  991.         which lists the current comparison system being utilized as the
  992.         base for all comparisons performed.
  993.  
  994.     Comparison Information
  995.             This section provides several key pieces of information about
  996.         test performance.  It gives the numerical ratings of all systems
  997.         utilizing the base machine as a reference.  These values are the
  998.         same as those used to generate the performance graph.
  999.             The system headers here which label the machine in each
  1000.         row are in fact gadgets that when pressed will move AIBB to its
  1001.         System Information Display, showing data on the system selected.
  1002.             In addition, this area houses the test code type gadgets/
  1003.         indicators.  Selection of code options for the host system causes
  1004.         AIBB to perform any tests utilizing those options.  Selections
  1005.         under the comparison systems result in AIBB using the figures for
  1006.         that code type ( previously obtained when the comparison data was
  1007.         generated ) when making comparisons.  Note that not all options
  1008.         will be available, depending on system capabilities.
  1009.             The gadgets allow for seperate selection of CPU and floating
  1010.         point code models.  Floating point code selections will only have
  1011.         effect on tests which use such operations, while the CPU code
  1012.         model will be in effect across all tests.  Thus, when performing
  1013.         a non-floating-point test, the current floating point code model
  1014.         selection is ignored.
  1015.             The gadgets are cyclic in nature; repeated selection will move
  1016.         them through all available code models.  The currently available
  1017.         CPU code types are:
  1018.  
  1019.         Standard 68000 Code
  1020.                  Having this item selected sets the code type to that which
  1021.              is compatible with all MC680x0 series microprocessors.  Note
  1022.              that this means no advantage is taken of the capabilities
  1023.              or code optimizations available on later-generation
  1024.              microprocessors of this series, but it is a good base
  1025.              selection as it can be utilized on all existing Amiga systems.
  1026.  
  1027.         68020+ Code
  1028.                  This item selects code compatible with later generation
  1029.              MC680x0 series processors.  It will not be compatible under
  1030.              most circumstances with earlier ( MC68000 or MC68010 ) based
  1031.              systems, but will take advantage of some of the more advanced
  1032.              capabilities of these later processors in the series.
  1033.  
  1034.         The currently available floating point code options are given
  1035.         below.  As indicated earlier, they will affect only tests which
  1036.         utilize floating-point math in nature.
  1037.  
  1038.         Standard Math Code
  1039.                  Using this option sets the code type to use software
  1040.              emulation of floating point routines.  This is compatible with
  1041.              all Amiga systems in use, as it is not hardware specific.
  1042.  
  1043.         In-Line Coprocessor Code
  1044.                  This option sets the test code type to that which uses
  1045.              faster in line FPU instructions for floating point operations.
  1046.              As not all systems will have a coprocessor available, this
  1047.              option is not universally available on all systems.
  1048.  
  1049.         68040 Enhanced Math Code
  1050.                  For use with 68040-based systems, this option allows the
  1051.              use of FPU code which is more optimized for 68040 processors.
  1052.              Such processors do not have hardware-assisted transcendental
  1053.              functions and this option will set up for in-line emulation of
  1054.              such, alleviating the need for trap-based libraries such as
  1055.              68040.library or similar vendor supplied code.
  1056.  
  1057.     Basic Information
  1058.             Located just below the performance graph, this area provides
  1059.         key pieces of information about the current state of the host
  1060.         system. The system CPU type, FPU type, and MMU type in use are
  1061.         displayed, as well as the current operational status of the MMU.
  1062.         Also displayed are the approximate CPU and FPU clock speed ratings,
  1063.         as calculated when AIBB first evaluated the host system on startup.
  1064.             This area also contains the system cache status indicators/
  1065.         gadgets.  These show the current state of any CPU caches which may
  1066.         exist, and also allow their condition to be changed by selecting
  1067.         the cache parameter desired.  Clicking on a particular parameter
  1068.         toggles it through both its "ON" and "OFF" states.
  1069.             A lot of confusion tends to exist about the CPU cache modes,
  1070.         and the MC680x0 cache BURST mode ( supported on the MC68030 and
  1071.         MC68040 ) is often not understood.  BURST mode operations are a
  1072.         special form of cache filling ( updating the contents of the cache ) where an
  1073.         entire "line" of cache data may be filled sequentially and faster
  1074.         than the single-entry mode of cache filling.  A cache "line" in
  1075.         this case is a series of 4 longwords ( 32 bits each ) arranged
  1076.         simplistically as:
  1077.  
  1078.                         entry:   1    2    3    4
  1079.  
  1080.                         line 1  ---- ---- ---- ----
  1081.                         line 2  ---- ---- ---- ----
  1082.                                       ...
  1083.  
  1084.         where each entry is one longword.  The MC68020 and MC68030 utilize
  1085.         cache sizes of 16 lines, giving 256 bytes of cache storage.  The
  1086.         MC68040 increases this to give a total of 4K of cache space for
  1087.         each of the data and instruction caches.
  1088.             BURST mode is essentially a compromise in performance.
  1089.         Average-case CPU performance is enhanced at the cost of worst-case
  1090.         performance.  The latter effect is true because during BURST mode
  1091.         operations the CPU bus controller is committed to a memory fetch
  1092.         sequence for a longer period of time than with single-entry mode.
  1093.         The mode enhances average and best case performance by allowing the
  1094.         CPU to sequentially fetch 3 additional longwords from memory faster
  1095.         than normally done by the usual asynchronous single-fetch bus cycle.
  1096.         Once it has fetched the first longword, the next 3 are clocked into
  1097.         the cache line utilizing only 2 clocks per fetch, thus filling one
  1098.         cache 'line' in 9 clocks ( assuming a zero-wait state initial
  1099.         fetch ) rather than 15 clocks.  The theory behind this is that the
  1100.         data/operands sequentially surrounding the initial fetch will most
  1101.         likely be needed soon in any case, and placing them in the cache
  1102.         leads to their eventual faster access.
  1103.             BURST mode operations are not universally applicable to all
  1104.         systems however.  Generally, the memory controller on the system
  1105.         ( or particular memory board ) must be capable of supporting BURST
  1106.         mode operations, or the BURST request by the CPU will not be
  1107.         fulfilled.  In systems not capable of these modes, activating them
  1108.         will not be detrimental, but will go unnoticed in performance terms.
  1109.         The CPU will request BURST fills when it deems appropriate, but the
  1110.         memory controller will not acknowledge the request and thus simply
  1111.         force the CPU to do single-entry fetches as in standard operation.
  1112.  
  1113.     Test Activation Gadgets
  1114.             These are located in the lower right-hand corner of the screen
  1115.         and serve several purposes.  Normally, they are utilized to start a
  1116.         test, but this is dependent upon the mode of operation AIBB is
  1117.         currently in.  See the section on "Review Mode" for further
  1118.         information of this nature.
  1119.             Activation of a gadget in standard mode starts a test with the
  1120.         current code parameters and general settings, as detailed in the
  1121.         appropriate sections later.  Tests are divided into two groups:
  1122.         "Standard" and Floating-Point.  Standard test types, denoted with
  1123.         WHITE lettering, are more general to the system, and represent code
  1124.         more often found in operational situations.  Floating-Point tests,
  1125.         given YELLOW lettering, utilize a great deal of floating-point math
  1126.         to test the system's performance across that domain. See the test
  1127.         descriptions for more detailed information on the tests available
  1128.         within AIBB.
  1129.  
  1130. B. Main Screen Menus.
  1131.  
  1132. AIBB's primary screen has attached to it a number of menu items, which
  1133. give even more options and control over program operation.  Those operations
  1134. are described below, in the order of the menus as they appear on the screen.
  1135.  
  1136. Menu 1: General
  1137.  
  1138.         About AIBB
  1139.                 This option presents a requester giving credits and
  1140.             information about this version of AIBB.
  1141.  
  1142.         Load Module Prefs
  1143.                 AIBB allows the use of alternate systems than those
  1144.             contained internally in order to make comparisons against
  1145.             the host system.  This menu item will bring up a requester-like
  1146.             arrangement which will allow the paths to load modules to be
  1147.             used in place of the internal defaults to be specified.  To
  1148.             replace an internal module at startup for comparisons, simply
  1149.             enter the full path name to the alternate load module in the
  1150.             respective entry in this requester.  Leaving an entry blank
  1151.             informs AIBB to use it's internal default for that system.
  1152.             Note that this configuration will take effect when AIBB is
  1153.             next started, and the the next menu item, "Save Configuration"
  1154.             as detailed below, must be selected to save the choices made
  1155.             here.
  1156.  
  1157.         Color Settings
  1158.                 The colors AIBB uses for its main screen displays are
  1159.             user selectable, and may be changed if personal taste desires.
  1160.             This menu option will bring up a color requester which will
  1161.             allow AIBB's palette to be modified to suit.  This may be
  1162.             particularly useful for users of monochrome monitors which can
  1163.             only display levels of grey, rather than color.  Under such
  1164.             circumstances some of AIBB's normal colors may map to grey
  1165.             shades so similar as to be indistinguishable on the screen.
  1166.             Use of this option can correct such a situation.
  1167.                 Use of the "Save Configuration" menu item will save the
  1168.             color palette chosen with this option to file, and AIBB will
  1169.             use that palette in subsequent invocations.
  1170.  
  1171.         Save Configuration
  1172.                 This saves the current state of AIBB's menu item selections,
  1173.             as well as the current order of the comparison machines as they
  1174.             are placed.  For more information on these regards, see the
  1175.             section on loading new comparison modules from the default
  1176.             systems within AIBB.  AIBB currently saves this data to a file
  1177.             called "aibb.prefs", which may be located in an assigned
  1178.             directory called AIBB:, or your system S: directory.  This
  1179.             file will be searched for, in that order, when AIBB is first
  1180.             invoked, and the values contained within will set AIBB's
  1181.             startup options.  If AIBB cannot locate a preferences
  1182.             configuration file, it will notify you and use internal
  1183.             default values.
  1184.  
  1185.         QUIT
  1186.             This item forces termination of AIBB.
  1187.  
  1188. Menu 2: System
  1189.  
  1190.         AIBB Task Priority
  1191.                  A submenu-endowed item, this selection allows for the
  1192.              changing of AIBB's task priority.  This is primarily for
  1193.              running tests while still allowing multitasking to occur,
  1194.              while examining the effects of different task priority levels.
  1195.              For information on disabling multitasking during test
  1196.              operations, see the "Disable Multitasking" entry under the
  1197.              Test Options menu descriptions.
  1198.  
  1199. Menu 3: Test Options
  1200.  
  1201.         Disable Multitasking
  1202.                  When this item is selected, it indicates AIBB should
  1203.              perform all tests in such a way as to disable all system
  1204.              multitasking during the run of any test.  This allows a figure
  1205.              to be generated which indicates the system performance FOR
  1206.              THAT TEST more accurately, as there is no task context
  1207.              switching during the test runs.  Note that all comparison
  1208.              system figures are generated with this option enabled, so this
  1209.              should be selected in order to compare the systems on an even
  1210.              par.  When this item is utilized, the previously mentioned
  1211.              ability to set AIBB's task priority will have no impact on
  1212.              test performance, as no task switching will occur, and thus
  1213.              the task priority level becomes meaningless.
  1214.                  It should be noted that when using this option, it is a
  1215.              good idea NOT to be running much in the background.  The
  1216.              Amiga's operating system is a near-real-time setup, requiring
  1217.              in many cases fast response to system conditions.  Use of this
  1218.              option can affect certain other operations adversely, most
  1219.              notably that of serial communications and the like.
  1220.  
  1221.         Screen Overlay
  1222.                  Using this option results in AIBB putting a one bitplane
  1223.              ( two color ) low-resolution screen over it's main screen
  1224.              during every test.  AIBB's normal screen is a high-resolution
  1225.              4 bitplane ( 16 color ) screen, and on CHIP RAM only systems,
  1226.              and for some tests even on FAST RAM equipped systems this may
  1227.              result in a great deal of bus contention on the CHIP RAM
  1228.              bus.  Subsequently, performance levels may be adversely
  1229.              affected for the test.  The use of this option attempts to
  1230.              alleviate some of this problem by utilizing a screen overlay
  1231.              which minimizes bus contention on the CHIP RAM bus by limiting
  1232.              the required DMA activity by the custom chips to display it
  1233.              while it is the topmost screen.  Again, all comparison data
  1234.              for the other systems is obtained with this option enabled,
  1235.              so in order to keep comparisons on par this option should be
  1236.              enabled, which it is by default values.
  1237.                  Note that for graphics-related tests this option will not
  1238.              be activated as it would be detrimental to what those tests are
  1239.              indeed trying to analyze.  It is advised that if this option
  1240.              is enabled while multitasking is permitted that screens not
  1241.              be shuffled while a test is in progress.  The uppermost screen
  1242.              is the cause of the CHIP RAM bus display DMA effects, and to
  1243.              shuffle to another screen during a test could nullify the
  1244.              advantage of using this option.
  1245.  
  1246.         Set Gfx Test Display Mode
  1247.                  AIBB allows all graphics tests to be run on any system
  1248.              supported display mode, and this option allows the user to
  1249.              select the display resolution and depth (number of colors)
  1250.              to use when running such tests.  Selection of this menu item
  1251.              brings up a screen mode requester via the asl.library
  1252.              requester functions.  As versions of asl.library which support
  1253.              the screen mode requester are required for this to function,
  1254.              the host system must be running AmigaOS 2.1 or greater.
  1255.                  Once a particular screen mode is selected, any graphics
  1256.              tests run will be done in that mode.  This is particularly
  1257.              useful for comparing the effects of differing resolutions and
  1258.              display depths on graphics performance levels.  One must be
  1259.              careful to take note of the modes used for the other systems
  1260.              as well, else improper conclusions as to how well a system
  1261.              does in these tests could be drawn.  For this reason, AIBB
  1262.              will post a warning if the screen mode of either the host
  1263.              system, or a comparison system does not match the modes in use
  1264.              on the other machines.  If simple, fair and straightforward
  1265.              checks are desired, all systems should be compared using
  1266.              the same screen mode.
  1267.  
  1268.         View Comparison System Gfx Modes
  1269.                  As AIBB does allow differing screen modes to be used for
  1270.              graphics tests, through this function it also allows browsing
  1271.              though the various modes in use on the host/comparison systems.
  1272.              Selection of this item brings up an interactive requester
  1273.              which allows movement through various systems, and comparison
  1274.              of the various display parameters in each.
  1275.  
  1276.         Set Comparison Base
  1277.                  This item contains the names of the comparison systems in
  1278.              a submenu area.  Selecting one of these submenu items sets
  1279.              the current comparison base system to that machine.  The
  1280.              comparison base is the system utilized as the 'base' value for
  1281.              test results when computing performance ratings.  All
  1282.              percentages shown are given as percentages of the base system,
  1283.              with a 1.0 value for a system indicating a performance
  1284.              equal to the base system.
  1285.  
  1286. Menu 4: Special
  1287.  
  1288.         Enter/Exit Review Mode
  1289.                  Entering Review Mode gives a method for reviewing
  1290.              previously performed tests and their comparisons.  When this
  1291.              mode is active, selecting a test gadget, or setting a
  1292.              comparison option ( code type, etc ), will result in the
  1293.              display of the results last obtained for that test.  If no
  1294.              test results for the host system are available, the
  1295.              information for the comparison systems currently in use will
  1296.              be shown, and the host system will data will be marked with a
  1297.              "N/A" indicating the information is not available.  The
  1298.              ability to display the comparison system data without running
  1299.              the actual test on the host system is provided to allow a
  1300.              quick view of the performance of said comparison machines
  1301.              before running the test(s) on the host.
  1302.                  Code type options may be manipulated here, and if a test
  1303.              result is available for those settings, it will be displayed.
  1304.              For example, if you were to have the Matrix test as the
  1305.              current test you are viewing, and you want to see the results
  1306.              of the test under 68020+ code, selecting that item under the
  1307.              "This Machine" code type selection will show the Matrix test
  1308.              results utilizing this code type ( if they were previously
  1309.              performed, making the data available ).
  1310.  
  1311.         Start/Stop Log File
  1312.                  AIBB has the ability to keep a "log file" of test
  1313.              activities.  This option allows you to start this logging
  1314.              operation, or stop it once in progress.  The log files contain
  1315.              basic information, in text form, about each test as it is
  1316.              performed, as well as essential system information.
  1317.                  Starting a log file involves selecting a file name to
  1318.              which AIBB will save this data.  If the file is an existing
  1319.              one, AIBB will check for the words "AIBBLogFile" at the start
  1320.              of the file.  If this is not found, you will be warned and
  1321.              given the option of aborting the use of this file as a log
  1322.              file.  Heed this...AIBB WILL write into any file if told it
  1323.              is acceptable, including executable load files.  This checking
  1324.              is done in order to prevent accidental file damage or
  1325.              destruction.
  1326.  
  1327.         All Tests | Make Module
  1328.                  This is a rather important option.  As indicated earlier,
  1329.              AIBB has the ability to create a "load module" of comparison
  1330.              results in order to utilize them later in other runs as a
  1331.              comparison system.  This selection allows the generation of
  1332.              just such a load module.  Selecting this menu item will result
  1333.              in a requester being displayed which warns that this option
  1334.              may take considerable time, and that multitasking will not be
  1335.              functional during it's operation.  At this point, the
  1336.              operation may be cancelled if it is not desired at that time.
  1337.                  When performing all the tests, the options "Disable
  1338.              Multitasking", and "Screen Overlay" previously mentioned are
  1339.              automatically enabled in order to give consistancy to all
  1340.              such generated modules which may be utilized in AIBB.  Using
  1341.              this option, all tests are performed in all possible code
  1342.              combinations available on the host system configuration, in
  1343.              order that later comparisons will have as much data to go by
  1344.              as possible.
  1345.                  Upon completion of all the tests, a requester will be
  1346.              displayed informing you if the tests completed successfully,
  1347.              and asking if you wish to create such a load module at that
  1348.              time.  If you choose to do so, a file requester will appear
  1349.              asking for the name of the file to save the module under.
  1350.              Following this, a smaller requester will appear asking for
  1351.              the name to use with the module under the graph display for
  1352.              it.  This defaults to the first 8 characters of the filename,
  1353.              but may be changed as desired.  Note that only names of up
  1354.              to 8 characters are supported at this time.
  1355.                  If "Cancel" is selected in reference to the module
  1356.              creation requester, AIBB will go back to it's normal
  1357.              operations, and other tests may be performed.  In this manner,
  1358.              it is possible to use this option simply to perform all
  1359.              possible test combinations for later review.  If you wish to
  1360.              review the tests done before making a module, this is
  1361.              possible by not saving the module at the time, and entering
  1362.              "Review Mode" upon finishing.  If no further tests are
  1363.              performed ( which would invalidate the consistancy of the
  1364.              module's data ), then selecting "All Tests | Make Module"
  1365.              again after reviewing the data will result in a requester
  1366.              informing you that the data for a module is still valid and
  1367.              will ask you if you wish to create one now.
  1368.                  It should be noted that comparison options and settings
  1369.              are not in effect during the performance of the tests with
  1370.              this option.  AIBB will merely do all tests with all code
  1371.              types possible, and keep the results ( if desired ).
  1372.              Comparison options are only effective ( and necessary ) when
  1373.              viewing the information present, and are not important when
  1374.              generating a load module.
  1375.                  Once all module options are completed, AIBB will present
  1376.              an analysis of the overall system performance with respect to
  1377.              the various comparison modules currently in use.  This analysis
  1378.              consists of averages in Integer, Graphics, and Floating-Point
  1379.              performance when put against each comparison machine in turn.
  1380.              This average gives somewhat of an "all around" look at the
  1381.              host system's performance levels.
  1382.  
  1383.         Show Aggregate Results
  1384.                  Once a load module has been performed on the host system,
  1385.              this item becomes available for selection.  When activated, a
  1386.              requester displaying combined totals for the host system in
  1387.              terms of Grapics, Integer, and Floating Point performance will
  1388.              be shown.  These totals are given as figures against the
  1389.              currently loaded comparison systems.  Additional tests may
  1390.              be run after the original load module creation to see any
  1391.              effects may take place in different configurations (cache,
  1392.              etc...).  Rerunning tests under the same situations as the
  1393.              module run uses will most likely not affect these figures
  1394.              significantly.
  1395.  
  1396.  
  1397. C. System Information Display
  1398.  
  1399.     The System Information Display is a seperate display which is brought
  1400. up when the Main Display gadgets for individual systems are selected.
  1401. This display gives various information about the state of the system
  1402. selected, and is also the location from which other load modules to enter
  1403. as comparison systems may be selected.
  1404.     The display here is broken into several sections, giving modular
  1405. information areas pertaining to various system data.  If the host system
  1406. is the system being viewed, the data represents the current state of the
  1407. host system.  If a comparison system's information is being viewed, then
  1408. the data is representative of the system state when that machine's module
  1409. was created for further comparisons.
  1410.     The upper portion of the display consists primarily of CPU/FPU/MMU
  1411. data and state information which is fairly self-explanatory.  Other
  1412. information given in this section includes the display type in use, Agnus
  1413. and Denise custom chip revisions of the system, and several items of
  1414. particular interest:
  1415.  
  1416.     System Stack Memory Location
  1417.             The system stack ( or "Supervisor Stack" ) is the memory region
  1418.         reserved for use by the processor while operating in what is known
  1419.         in M680x0 terms as "Supervisor Mode".  Supervisor mode is the CPU
  1420.         mode of operation most often associated with operating system
  1421.         use, and various system maintenance operations.  Supervisor mode
  1422.         is characterized primarily by the fact that it allows unhindered
  1423.         access to certain CPU operations which are of primary interest only
  1424.         to system-level operating system functions.  User Mode is the
  1425.         operational status in which almost all applications function, and
  1426.         said CPU operations are considered "off limits" in this mode.  This
  1427.         is to protect the integrity of the system from runaway programs and
  1428.         the like, and to more easily facilitate multiprocessor/multiuser
  1429.         system environments.  It is a characteristic of the M68000
  1430.         microprocessor series and serves to allow a seperation between
  1431.         operating system priviledges and user program priviledges.
  1432.             The system stack is where much CPU state information is stored
  1433.         during operating system activities, and thus it is important to
  1434.         recognize it's location in memory.  Depending on the memory type
  1435.         where this stack is located, it may affect certain operation speeds,
  1436.         and it's location is thus given here to allow this to be taken into
  1437.         account when evaluating system performance.  It should be noted
  1438.         that although this is an important item of interest, it is
  1439.         generally not going to have much effect on the greater majority of
  1440.         AIBB's operational modes and testing.
  1441.  
  1442.     AIBB Process Stack Memory Location
  1443.             This item is probably of more interest than the System Stack
  1444.         location.  AIBB's process stack is a memory region which is
  1445.         assigned to AIBB ( and any user program ) when it is invoked.
  1446.         Certain program variables and data are stored on the stack during
  1447.         operations, and thus it's location can affect performance levels.
  1448.         This should be taken into account carefully, as some of the testing
  1449.         AIBB does utilizes this stack for data, and thus results will be
  1450.         affected if it is located in a slower memory medium than optimal
  1451.         for the system configuration.
  1452.  
  1453.     Operating System Version
  1454.             This field identifies the operating system version in use on
  1455.         the system in question.  Certain versions may have different
  1456.         features, and may affect certain of the test performance levels.
  1457.  
  1458.     Operating System Location
  1459.             On certain MMU equipped accelerated systems, or on such system
  1460.         with special hardware setups, the operating system ROM image may
  1461.         be relocated to a faster memory medium.  ROM access times are
  1462.         generally slower than that of RAM resources, and in the case of an
  1463.         A500 or A2000 with an accelerator which is more at home with a
  1464.         32-bit data bus than those systems' normal 16-bit 7.15 MHz bus,
  1465.         it is extremely advantageous to move the operating system kernel
  1466.         code to such a faster accessed memory region.  Often times, this
  1467.         relocation is done by using a system's MMU ( Memory Management
  1468.         Unit ), which allows for address translation of memory "pages".
  1469.             Translation occurs by mapping a certain memory region such that
  1470.         accesses to it are rediverted to an alternate location in this
  1471.         kind of setup.  Programs such as Dave Haynie's SetCPU and the
  1472.         CPU program which comes with AmigaOS 2.0 and above allow this type
  1473.         of operation.  AIBB is capable of determining the actual memory
  1474.         location of the ROM code image by checking through the MMU
  1475.         translation tables, and will report where the code resides.
  1476.             Some accelerators allow for translation of the ROM image
  1477.         without utilizing an MMU.  Such units utilize a custom hardware
  1478.         arrangement, and at this time AIBB cannot accurately determine the
  1479.         memory location of the ROM image for these systems.  In these cases, it
  1480.         is recommended that such translations be noted for further
  1481.         reference if comparisons are to be made against other systems
  1482.         utilizing a module or log file results so that no confusion about
  1483.         the system setup occurs.
  1484.  
  1485.     The lower portion of the System Information Display contains provisions
  1486. for examining system memory node, expansion board, or pertinent sytem
  1487. library information.  Three gadgets to the right of this area provide the
  1488. means to select the desired display.  The list of nodes or boards can be
  1489. moved through using the 'Next' and 'Previous' gadgets located below
  1490. the selection gadgets, while the library information is static.  The
  1491. information given for memory nodes is:
  1492.  
  1493.     Memory Node Index
  1494.             This is an index value corresponding to which node is currently
  1495.         being viewed, and how many total nodes exist.  This value
  1496.         directly relates to the main screen's "Code Loc" and "Data Loc"
  1497.         test information values and can be used to determine where AIBB's
  1498.         test code and data is located.
  1499.  
  1500.     Memory Node Name
  1501.             This is simply the name of the given memory node.
  1502.  
  1503.     Memory Node Address Range
  1504.             The address range for the current memory node is displayed here
  1505.         in a hexadecimal form.  Both the starting address, and ending
  1506.         address are given.
  1507.  
  1508.     Memory Node Total Size
  1509.             The total usable memory within the given node is displayed here.
  1510.  
  1511.     Memory Node Priority
  1512.             Memory on the Amiga is prioritized for allocation.  This means
  1513.         that memory of a higher priority is given precendence over other
  1514.         memory regions when an allocation request is attempted.  For
  1515.         example, a memory region of priority 5 will be scanned first for
  1516.         a suitable memory chunk for a given allocation request before
  1517.         attempting other regions.  If there is not enough memory in this
  1518.         region, the next priority region is tried, and so on.  The main
  1519.         item of note otherwise is that this is true for GENERAL memory
  1520.         requests.  Memory requests which specifically ask for CHIP memory
  1521.         will have the allocation attempted there, regardless of priority.
  1522.  
  1523.     Memory Node Bus Port Width
  1524.             This is the bus width of a given memory region.  A 16 bit bus
  1525.         corresponds to a data path width of 16 bits, 32 meaning a 32 bit
  1526.         data path width, etc.  For 68020+ systems, memory port widths of
  1527.         32 bits will have the advantage over 16 bit ports for efficiency
  1528.         reasons, as the 68020 and above have 32 bit data paths, whereas
  1529.         the 68000/68010 have 16 bit data paths.
  1530.  
  1531.     Memory Node Type
  1532.             Whether the given node is FAST memory or CHIP memory is
  1533.         displayed here.
  1534.  
  1535.     Custom Chip Bandwidth
  1536.             This will only be seen when examining a CHIP memory node, and
  1537.         only under AmigaOS 3.0 or greater, and indicates the bandwidth
  1538.         specified for CHIP memory on the system.  Note that at present
  1539.         the only differences here will be seen between AGA chipset
  1540.         equipped systems and non-AGA equipped machines.
  1541.  
  1542.     CPU/Memory Access Latency Index
  1543.             This figure represents the latency between a memory cycle, and
  1544.         when another cycle can be performed.  Lower ratings indicate better
  1545.         response times for a particular memory node, with the unattainable
  1546.         goal of 0.0 indicating that no latency occured at all.  Basically,
  1547.         this gives information as to the relative efficiency of various
  1548.         memory nodes (eg, one with a rating of 5.0 would be more efficient,
  1549.         and hence faster than one with a rating of 7.0.).  Note that this
  1550.         can only be used as a valid comparison across different systems if
  1551.         other factors such as processor type, clockspeed, and bus width are
  1552.         also taken into account.  This figure is most useful in comparing
  1553.         two different memory regions on similar systems, such as two memory
  1554.         boards on a 68030 based system against each other for relative
  1555.         efficiency.  Note that this figure will only be given for
  1556.         FAST RAM memory regions.
  1557.  
  1558.     When Expansion Board information is selected, information about the
  1559. system AutoConfig® boards will be shown.  The given fields will be as
  1560. follows:
  1561.  
  1562.     Board Index
  1563.             The index value for this board, and the total number of
  1564.         expansion boards for which information is available is shown here.
  1565.  
  1566.     Board Address
  1567.             This is the configuration address of the given board.  For
  1568.         memory boards, this will generally reflect the starting address of
  1569.         the memory region it occupies.
  1570.  
  1571.     Board Size
  1572.             The total byte size reqirements for the board will be displayed
  1573.         here.  This shows the amount of memory this board will take up
  1574.         when configured onto the system.  Note that with memory boards,
  1575.         this will generally reflect the size of the memory available on
  1576.         the expansion board.
  1577.  
  1578.     Board Manufacturer ID
  1579.             Commodore-Amiga assigns all valid AutoConfig® board
  1580.         manufacturers a unique ID code.  This field contains the ID of the
  1581.         manufacturer of the given board being shown.
  1582.  
  1583.     Board Product ID
  1584.             Manufacturers have the option of assigning a product ID to
  1585.         their boards.  This shows the product ID given to a particular
  1586.         expansion board.
  1587.  
  1588.     Board Type
  1589.             At this time, this field will simply designate whether the
  1590.         given board is a memory board, or some other type of peripheral
  1591.         expansion.
  1592.  
  1593.     Board Attributes
  1594.             This field basically gives information as to whether the
  1595.         expansion device is configured as a valid Zorro-II or Zorro-III
  1596.         setup.
  1597.  
  1598.     Ident
  1599.             AIBB contains a number of expansion board identifications
  1600.         internally, and will attempt to match the board found with one of
  1601.         these in the lists.  If no match is found, the statement "No
  1602.         Information Available" will be given to indicate this.  If you see
  1603.         this message, and wish the board in question to be listed in
  1604.         AIBB's lookup tables, please let me know by way of providing me
  1605.         with the expansion board Product ID, Manufacturer ID, and
  1606.         the identity of the device.
  1607.  
  1608.     When Library node information is selected, information about pertinent
  1609. system libraries will be shown.  Note that not all system libraries
  1610. currently in use are displayed.  Only selected ones which are of interest
  1611. when determining performance factors are recorded.  Currently these
  1612. are:
  1613.  
  1614.                              exec.library
  1615.                             graphics.library
  1616.                            intuition.library
  1617.                             layers.library
  1618.                            expansion.library
  1619.  
  1620. The information given is of the following form:
  1621.  
  1622.     Library Name
  1623.             This is simply the name of the library in question.
  1624.  
  1625.     Library Version
  1626.             This field gives the version and revision of the system
  1627.         library being displayed.  This may be important when looking at
  1628.         performance statistics of tests which make use of system kernel
  1629.         calls (such as graphics tests).
  1630.  
  1631.     Library Base:
  1632.             This is the base address of the library, and indicates where
  1633.         in memory it is located.  Again, this may be of interest when
  1634.         examining the performance of tests which make use of system
  1635.         kernel calls.
  1636.  
  1637.  
  1638.     The System Information Display also includes a number of menu options
  1639. which are explained below:
  1640.  
  1641.     Select Other:
  1642.             A submenu attached to this item allows you to switch to viewing
  1643.         another system's attributes from within this display.
  1644.  
  1645.     Load New:
  1646.             This is the option to utilize if you wish to load a comparison
  1647.         module in place of the ones alread in use.  The loaded module
  1648.         will replace the currently displayed system's location in the
  1649.         comparison systems.  This option is not available when viewing
  1650.         the host system's data.  Subitems attached to this menu item
  1651.         allow you to select the type of module to load.  These are:
  1652.  
  1653.         From File:
  1654.                 This should be selected if you wish to load a previously
  1655.             saved module in file form.  A requester will be displayed
  1656.             asking for the file name to load.  AIBB will attempt to load
  1657.             the module, and if all data consistancy checks are valid, it
  1658.             will place this data in the location of the previously
  1659.             displayed system.
  1660.  
  1661.             Under this option is a list of the internal default modules
  1662.         AIBB contains.  This allows the rearranging of the order of the
  1663.         default systems as they appear on the graph in the Main Display,
  1664.         and also allows a default system's values to be re-loaded if one
  1665.         is superseded by a file-based module at an earlier time.  Note that
  1666.         the order of the system default modules is one of the items saved
  1667.         in the AIBB.prefs file, so you may choose any ordering of the
  1668.         internal startup default systems which suits you best.
  1669.  
  1670.     Return to Main:
  1671.         Returns you to the Main Display portion of AIBB.
  1672.  
  1673.                      AIBB's Default Comparison Systems
  1674.  
  1675.    AIBB's internal default comparison systems were selected to give a
  1676. broad overview of a number of system configurations and hardware types.
  1677. These systems are:
  1678.  
  1679.     A600-NF
  1680.            An Amiga 600 system with no FAST RAM ( NF ) complement.  This
  1681.         is an all CHIP RAM based machine, and is provided here to give a
  1682.         comparison towards systems utilizing only CHIP RAM.  This is a
  1683.         stock machine, with accelerator devices or other additional
  1684.         enhancements.  AmigaOS 2.x was the operating system used and was
  1685.         located in ROM.
  1686.  
  1687.     A1200-NF
  1688.            Commodore's low-end AGA machine, the Amiga 1200, was used to
  1689.         gather the data for this system.  No FAST RAM was used in this
  1690.         machine, and AmigaOS 3.0 ( V39.106 ) in ROM was the operating
  1691.         system present
  1692.  
  1693.     A3000-25
  1694.             The comparison data here was obtained from a 25 MHz CPU rated
  1695.         system, which utilizes the MC68030 CPU and MC68882 FPU as it's
  1696.         processing engines, and equipped with static-column (BURST mode
  1697.         capable) FAST RAM.  AmigaOS 2.x was the operating system in use,
  1698.         and was located in ROM on the system A3000's motherboard.
  1699.  
  1700.     A4000-25
  1701.         An Amiga 4000 utilizing a 25 MHz 68040 CPU (stock configuration)
  1702.         was utilized to obtain comparison data.  AmigaOS 3.0 was utilized
  1703.         as the system OS ( V39.106 ) and was located and run out of ROM on
  1704.         the motherboard.
  1705.  
  1706.         It should be kept in mind that all parameters for each system should
  1707.     be noted when making comparisons by checking the statistics located
  1708.     on AIBB's System Information Display.  Small items such as the system
  1709.     stack location, cache settings, OS version and image location, etc...,
  1710.     could play a part in any apparent discrepency.  Making note of these is
  1711.     important to fully understand the figures being provided.
  1712.         One important aspect of performance regarding the Amiga which has
  1713.     come more seriously to light is the question of display parameter
  1714.     effects on test results.  With the advent AGA, and the new
  1715.     display modes it contains, a great deal more care must be taken when
  1716.     making system comparisons because of the system bus bandwidth limiting
  1717.     effects some modes may have.  Please do make sure to note the display
  1718.     mode used on the default A4000 contained here (AIBB will show if Mode
  1719.     Promotion was in effect (DBLModes)) when comparing systems.  Also, when
  1720.     making modules or test result notes, it is wise to carefully monitor
  1721.     what types of screens are currently in use and displayed when AIBB is
  1722.     performing tests.
  1723.         In all the systems above, all tests performed were done with AIBB's
  1724.     test code and data located in the fastest memory medium located on each
  1725.     system.
  1726.         No third-party accelerated machines were included in the lineup as
  1727.     this would leave an unfair advantage/disadvantage to any particular
  1728.     manufacturer.  Comparisons of that sort can still be carried out
  1729.     utilizing AIBB's load-module capability to bring in data from such
  1730.     systems for direct comparisons.
  1731.  
  1732.  
  1733.                        OVERVIEW OF INCLUDED TESTS
  1734.  
  1735.    The tests AIBB incorporates are described below.  The type of test,
  1736. and it's basic operations are given in the descriptions, as well as the
  1737. amount of memory each test may need to allocate external to AIBB itself.
  1738. The "standard" tests are as follows:
  1739.  
  1740.      A. WritePixel
  1741.             The WritePixel benchmark will open a screen/window combination
  1742.         and fill it completely with a given color pattern.  The work is
  1743.         done one pixel at a time, utilizing the operating system routines
  1744.         SetAPen() ( sets the current RastPort primary pen color ) and
  1745.         WritePixel() ( which sets a pixel to the current primary pen
  1746.         color).
  1747.             The test is basically a benchmark of the time needed to call
  1748.         these routines, and for them to execute. For the most part, this
  1749.         it will be primarily useful for evaluating the effective ROM
  1750.         image access time for systems which differ from the conventional
  1751.         ROM access method found on the Amiga 500/600 and 2000, namely
  1752.         accessing the ROM over those systems' normal 16 bit bus.  As these
  1753.         routines also result in many accesses to the CHIP RAM bus, it can
  1754.         also give a hint as to the efficiency of a system's CHIP RAM bus
  1755.         interface.
  1756.             WritePixel reports its results in pixels per second drawn.
  1757.         Please note that this is NOT the maximum pixel rate of any
  1758.         particular system, as there are more efficient methods of doing
  1759.         this kind of work.  This is the effective pixel rate of the system
  1760.         when the methods and routines used by this test are employed.
  1761.  
  1762.         Memory Usage: No direct memory resources external to AIBB are
  1763.                       allocated.  CHIP memory is utilized for the screen
  1764.                       and window.
  1765.  
  1766.      B. Dhrystone
  1767.             This test should be fairly familiar to most people, as it has
  1768.         been utilized on many different system for benchmarking purposes.
  1769.         It is a test which attempts to put conditions upon the system
  1770.         which more closely simulates a possible applications program
  1771.         section.  It returns, not run-time in seconds, but rather a rating
  1772.         of Dhrystones per second, where in this case, the larger number
  1773.         indicates better performance.
  1774.  
  1775.         Memory Usage: No memory resources external to AIBB are allocated.
  1776.  
  1777.      C. Matrix
  1778.             A matrix manipulation benchmark utilizing 3 50x50 integer
  1779.         matrices.  The test simply performs a series of matrix operations
  1780.         (addition/subtraction, multiplication, transposition, etc) upon
  1781.         these matrices.  The test is set up in such a way that a great
  1782.         amount of time is spent moving data, as well as performing
  1783.         arithmetic operations upon it.  Therefore, this could be thought
  1784.         of as also testing memory manipulation efficiency.  The test
  1785.         is an indicator of how well a processor/memory combination handles
  1786.         memory accesses to data and operations on such, as the test does
  1787.         not allow the processor to simply perform the data operations
  1788.         solely within it's registers.
  1789.  
  1790.         Memory Usage: 30,000 ( 29.3K ) bytes external to AIBB are allocated.
  1791.  
  1792.      D. MemTest
  1793.             This test is memory-bound, as its name implies.  In essence,
  1794.         it is a memory block movement test, timing the efficiency of memory
  1795.         accesses and transfers using longword (32 bit) sizes.  It should be
  1796.         noted that the Data Loc portion of the test result information
  1797.         will supply the node location of the RAM being tested. Systems
  1798.         with FAST RAM will show higher results, as the test will execute
  1799.         quicker, and as can be expected, 32-bit ported FAST RAM will
  1800.         perform better than its 16-bit ported counterpart.  Note that this
  1801.         test will use FAST RAM as a memory medium if available, and
  1802.         will report its results in megabytes transferred per second.
  1803.  
  1804.         Memory Usage: 32,768 ( 32K ) bytes external to AIBB are used.
  1805.  
  1806.      E. Sieve
  1807.             Another test which should be familiar to most, the Sieve of
  1808.         Erathosthenes.  It uses a fairly simple algorithm to determine
  1809.         prime numbers within a range of numbers.  This test simply times
  1810.         your system when implementing this algorithm, which is decribed
  1811.         fully in many textbooks, or one can simply look at BYTE Magazine's
  1812.         benchmarks, which use a similar Sieve test.
  1813.  
  1814.         Memory Usage: No memory resources external to AIBB are allocated.
  1815.  
  1816.      F. Sort
  1817.             A series of 30,000 16-bit integers is sorted from a pseudo-
  1818.         random setup, and the procedure is timed.  "Pseudo-random" meaning
  1819.         that the number arrangement is not created in a random fashion, but
  1820.         rather in a mixed fashion so that on each invocation of the test
  1821.         the numbers will be created in the SAME mixed fashion.  This is
  1822.         because the sorting algorithm is sensitive to the mixing, and if
  1823.         each time the test was run a different group of values was used,
  1824.         no two tests results could be compared well.  The mixing method I
  1825.         used was to insure that the algorithm would be forced to do the
  1826.         most work for each test.
  1827.  
  1828.         Memory Usage: 60,000 ( 58.6K ) bytes external to AIBB are allocated.
  1829.  
  1830.      G. IMath
  1831.             Integer Math.  This test performs a wide variety of integer
  1832.         math functions.  Included among these operations are the standard
  1833.         functions, such as addition, subtraction, multiplication, division,
  1834.         and a few additional bitwise functions, such as ANDing, ORing, and
  1835.         XORing.
  1836.  
  1837.         Memory Usage: No memory resources external to AIBB are allocated.
  1838.  
  1839.      H. TGTest
  1840.             Text/Graphics test.  This test is another one which is
  1841.         dependent upon the efficiency of the system graphics routines'
  1842.         execution speed, as well as the efficiency of the CHIP RAM bus
  1843.         interface on the system.
  1844.  
  1845.         Memory Usage: No direct memory resources external to AIBB are
  1846.                       allocated.  CHIP RAM is used indirectly for the
  1847.                       screen/window creation.
  1848.  
  1849.      I. EmuTest
  1850.             This test is basically a small CPU emulator core running an
  1851.         instruction set simulation (basically a small program).  The Amiga
  1852.         seems to have gained a bit of a precedence in CPU emulation, and
  1853.         this test was developed for the purpose of showing various systems'
  1854.         ability to perform such emulation efficiently and speedily.  The
  1855.         simulated CPU is a standard 68000, though the results from this can
  1856.         be taken as indicative of other CPU emulators as the basic principle
  1857.         is the same.  All instructions and internal operations are
  1858.         completely software emulated.  The results for this test are given
  1859.         in Simulated MegaHertz, basically a rating showing how fast the
  1860.         emulation is towards an equivalent hardware-based CPU.
  1861.  
  1862.         Memory Usage: No memory resources external to AIBB are allocated.
  1863.  
  1864.      J. InstTest
  1865.             This test is not affected by the code settings given for any
  1866.         system. It performs a series of the most common CPU instructions in
  1867.         a 6K loop, and times their execution.  It then does a percentage
  1868.         average of the instruction makeup, and gives a result in
  1869.         Instructions per Second.  THIS IS NOT A STANDARD "MIPS" TEST!  Most
  1870.         tests using the "MIPS" scale are very simplistic and for the most
  1871.         part are not very useful whatsoever.  A standard "MIPS" scale test
  1872.         will most likely give you numbers much larger than AIBB will.  AIBB
  1873.         attempts to make an even spread of 680x0 instruction execution, thus
  1874.         showing a somewhat more even look at things.  This test is basically
  1875.         to determine the raw speed of code execution on any given system.
  1876.  
  1877.         Memory Usage: No memory resources external to AIBB are allocated.
  1878.  
  1879.      K. EllipseTest
  1880.             This is a test of an applied graphics operation.  The test
  1881.         draws a series of filled, anti-aliased ellipses and times the
  1882.         operation.  Anti-aliasing is the technique of "blending" line
  1883.         curves so as to soften their sharper edges.
  1884.  
  1885.         Memory Usage: No direct memory resources external to AIBB are
  1886.                       allocated.  CHIP memory is utilized for the screen
  1887.                       and window.
  1888.  
  1889.      L. LineTest
  1890.             A test of line-drawing primitives.  LineTest opens a screen/
  1891.         window combination and draws a series of lines throughout them.
  1892.         The lines are drawn in horizontal, vertical, and diagonal fashion,
  1893.         with emphasis being on the former two.  This test reports its
  1894.         results in terms of lines drawn per second.
  1895.  
  1896.         Memory Usage: No direct memory resources external to AIBB are
  1897.                       allocated.  CHIP memory is utilized for the screen
  1898.                       and window.
  1899.  
  1900.  
  1901.          The floating-point specific tests implemented by AIBB are given
  1902.      below.  Note that these tests are also dependent on any standard code
  1903.      type selections which may be made, as well as the type of floating-
  1904.      point code utilized.
  1905.          Tests are marked as to their usage of transcendental functions
  1906.      ( sin(), cos(), log(), etc... ) for record keeping and comparisons by
  1907.      68040 users, who should see the appropriate notes in this documentation
  1908.      concerning the built-in 68040 FPU and transcendental functions.  The
  1909.      rating scale used below for such usage corresponds to this table:
  1910.  
  1911.           Level                             Meaning
  1912.      -----------------------------------------------------------------------
  1913.           NONE     |         No transcendental functions are used
  1914.           LIGHT    |  5-20% of calculations are transcendental in nature.
  1915.          MODERATE  |  21-50% of calculations are transcendental in nature.
  1916.           HEAVY    |  Greater than 50% of calculations are transcendental.
  1917.      -----------------------------------------------------------------------
  1918.  
  1919.      M. FMath
  1920.             Floating Point Math.  Similar to the IMath test, with the
  1921.         exeception that Floating Point values and operations are utilized.
  1922.         With this test, no bitwise operations are performed.  Single
  1923.         precision floating point operations/values are used here.
  1924.  
  1925.         Transcendental Usage: NONE.
  1926.         Memory Usage: No memory resources external to AIBB are allocated.
  1927.  
  1928.      N. Savage
  1929.             This is another of the "probably familiar" tests.  It is a
  1930.         standard implementation of the Savage test, which makes nested
  1931.         calls to transcendental functions to create a single value.
  1932.         Double precision floating point operations/values are used.
  1933.  
  1934.         Transcendental Usage: HEAVY; this test is almost exclusively
  1935.                               transcendental in nature.
  1936.         Memory Usage: No memory resources external to AIBB are allocated.
  1937.  
  1938.      O. FMatrix
  1939.             The FMatrix test is similar in concept to the Integer Matrix
  1940.         test outlined above.  Again, a great deal of data movement is
  1941.         performed, in addition to the operations involved, which are
  1942.         floating point operations in this case.  With the matrix
  1943.         operations, the results under Floating Point coprocessor equipped
  1944.         systems can be interesting to note, as the system is not able to
  1945.         keep the data within fast-access FPU registers, and thus must make
  1946.         frequent bus accesses for the data it needs.  Double-precision
  1947.         floating point math is used for this test.
  1948.  
  1949.         Transcendental Usage: NONE.
  1950.         Memory Usage: 38,400 ( 37.5K ) bytes external to AIBB are allocated.
  1951.  
  1952.      P. Flops
  1953.             A common rating of floating-point operations, the term
  1954.         'Flops' denotes Floating point operations per second.  This test
  1955.         takes a composite of operations and reports its results in terms
  1956.         of scalar MFlops, where 1 MFlop is one million floating point
  1957.         operations per second.
  1958.  
  1959.         Transcendental Usage: NONE.
  1960.         Memory Usage: No memory resources external to AIBB are allocated.
  1961.  
  1962.      Q. TranTest
  1963.             This is a test which is solely transcendental in nature.  A
  1964.         series of transcendental functions are performed in a large loop,
  1965.         and timed for speed of operation.  This test will tend to show
  1966.         the relative efficiency of a system in performing more complex
  1967.         mathematical functions.
  1968.  
  1969.         Transcendental Usage: HEAVY ( Completely transcendental ).
  1970.         Memory Usage: No memory resources external to AIBB are allocated.
  1971.  
  1972.      R. BeachBall:
  1973.             The BeachBall test was originally written by Bruce Holloway of
  1974.         Weitek, and published in the March 1988 issue of Byte Magazine.
  1975.         It is essentially a very math-intensive operation which draws a
  1976.         beachball on the screen, complete with shading.  The test opens a
  1977.         640x400 interlaced 16-color screen, and proceeds to render the
  1978.         picture.  This test is closer to a true "application" test, in that
  1979.         it actually does something visible, and produces an output.  The
  1980.         system will end up being tested in both the floating point arena,
  1981.         and in CHIP RAM access performance, which is done through standard
  1982.         operating system graphics handling calls ( thus will be affected by
  1983.         the speed of such, which in turn can be affected by ROM image
  1984.         re-mapping, etc ).
  1985.  
  1986.         Transcendental Usage: LIGHT.
  1987.         Memory Usage: No direct memory resources external to AIBB are
  1988.                       allocated.  CHIP RAM is used indirectly for the
  1989.                       screen creation.
  1990.  
  1991.      S. FTrace:
  1992.             Another applications-type test.  FTrace implements a subset of
  1993.         the calculating functions which are used to perform ray-tracing
  1994.         operations.  Ray-tracing is a particularly floating-point intensive
  1995.         art, and this test gives some indication of a system's performance
  1996.         in this type of operation.  No visible result is produced, so in
  1997.         that matter it is not an 'ideal' test, but it can be used to give
  1998.         some indications in this arena.
  1999.  
  2000.         Transcendental Usage: LIGHT; Calculations are performed in such
  2001.                               a way that transcendental usage is minimized.
  2002.         Memory Usage: No memory resources external to AIBB are allocated.
  2003.  
  2004.      T. CplxTest:
  2005.             This test implements a series of complex-number operations and
  2006.         times their execution.  Complex number applications are important
  2007.         in many of the sciences, and are particularly prevalent in such
  2008.         areas as electrical engineering ( circuit analysis ) and vector
  2009.         analysis to some degree ( not specifically "complex numbers" in
  2010.         that case, but the operations are similar ).  This test utilizes
  2011.         a lot of quick, small memory moves, as well as performing a
  2012.         variety of floating-point operations.
  2013.  
  2014.         Transcendental Usage: LIGHT TO MODERATE.
  2015.         Memory Usage: No memory resources external to AIBB are allocated.
  2016.  
  2017.  
  2018.                               NOTES AND SUMMARY
  2019.  
  2020.     It has been indicated before, but it should again be emphasized that
  2021. no benchmark or even suite of benchmarks can hope to give a complete picture
  2022. of system performance alone.  A full picture of the system resources, as
  2023. well as an understanding of just what the system in question is being used
  2024. for is necessary to make any type of evalution.  AIBB is merely one small
  2025. tool which may be used to try to gather a sampling of data when making
  2026. a performance determination.
  2027.     When performing tests, it is very important to keep track of just
  2028. where test code and data is being placed in the system by using the
  2029. information provided by AIBB, and by using other methods if need be.  For
  2030. example, if you have a 512K CHIP RAM machine, and some SLOW-FAST RAM
  2031. ( sometimes mistakenly thought of as true FAST RAM ), this could affect
  2032. test results in ways not expected.  Keeping careful track of these
  2033. variables can help in determining just what is occuring in the system
  2034. during performance analysis.
  2035.     Of some interest in terms of FPU performance is the MC68040's
  2036. built-in FPU unit.  This FPU is a subset of Motorola's previous MC68881
  2037. and MC68882 coprocessors, and does not include all functions on-chip
  2038. which were supported by the previous FPUs.  Most notably, the transcendental
  2039. function such as sine and cosine, etc... are not hardware supported.
  2040. Rather, the simpler functions such as floating-point multiplication,
  2041. addition, division, etc.. have been greatly optimized and enhanced.  The
  2042. MC68040 FPU relies on software emulation of the complex functions, and
  2043. most accelerator vendors, as well as CBM itself, supply a function library
  2044. to emulate these routines in the form of software 'traps'.  Since the
  2045. complex functions utilize the simpler functions to derive their actions,
  2046. in theory all functions should still execute faster than on previous
  2047. coprocessors.  However, this may not be the case.
  2048.     Trap functions such as those supplied in the aforementioned libraries
  2049. are routines executed when the coprocessor indicates an unsupported
  2050. function routine is being called.  This is a form of 'exception' routine,
  2051. requireing CPU/FPU internal context saving, and other related actions.
  2052. This is because the CPU/FPU treats the function call as an error, and
  2053. calls the error routine appropriate to it.  In this case, it will be
  2054. the math support library, which will execute the proper function and return
  2055. the value needed.  Unfortunately, all this activity results in a
  2056. performance hit, resulting in timings which are longer than that of the
  2057. previous coprocessors which emulated these functions in their hardware.
  2058.     All this might imply that the 68040 is crippled in this respect. However,
  2059. this is not the case.  Applications written to take advantage of of
  2060. 68040's FPU will function much faster, as they will emulate the required
  2061. complex functions in forms not requiring the trap functions.  The trap
  2062. functions are there for programs which are using FPU code set up for the
  2063. MC68881 or MC68882, which are at this time the more common FPU units.
  2064.     AIBB includes an option, specified earlier, for more efficient 68040
  2065. FPU code.  This code emulates the transcendental functions an other
  2066. functions unsupported by the 68040 within AIBB itself.  This will alleviate
  2067. the overhead involved with trap-based emulation methods if selected.
  2068.  
  2069.  
  2070.                        CREDITS AND ACKNOWLEDGEMENTS
  2071.  
  2072.     As with all large projects, nothing is accomplished entirely by one
  2073. person.  I have many people to thank for their assistance in the
  2074. development of AIBB.  A few of the more influential people who have
  2075. contributed greatly to this effort are:
  2076.  
  2077.     Kimberly Polglase
  2078.             For putting up with me throughout this ordeal :)
  2079.  
  2080.     Redmond Simonsen
  2081.             One heck of a nice guy and thought provoking fellow.  His help
  2082.         with interface ideas was very much appreciated, and are still
  2083.         instrumental in any upcoming future versions of AIBB.
  2084.  
  2085.     Dr. J. Scott Thayer
  2086.             Sysop of AmigaFriends BBS, and a dedicated beta tester
  2087.         extraordinaire.  His comments and testing data were key to much
  2088.         of what was done with this program over the course of it's
  2089.         development.
  2090.  
  2091.     Mathew Rouch
  2092.             A good friend of mine, and a computer science student at
  2093.         present.  His help in several algorithmic coding problems allowed
  2094.         me to solve some difficulties which would have taken a great deal
  2095.         longer to overcome than they did.
  2096.  
  2097.    Unfortunately, I cannot list everyone who has been of assistance with
  2098. this project, but to all of them, listed and unlisted, I wish to express
  2099. my deepest thanks and appreciation.
  2100.    Comments and suggestions about this program are always welcomed, as I
  2101. hope to be able to continue its development.  Please feel free to make
  2102. any suggestion you see fit, but do try to be constructive in any
  2103. criticism so that I may improve AIBB.  Bug reports are certainly wanted,
  2104. and I will do my best to locate and correct such problems.
  2105.    I can be reached electronically many ways, but the following are probably
  2106. the easiest methods for those with internet access:
  2107.  
  2108.               lkoop@tigger.stcloud.msus.edu     ( GP Acct )
  2109.               f00012@kanga.stcloud.msus.edu ( Engineering Acct )
  2110.  
  2111.                           ( Pick your paths :) )
  2112.  
  2113. I can also be found on BIX as "lkoop", and can be reached there easily
  2114. as well.  For those wishing to correspond by mail, comments may be sent to:
  2115.  
  2116.                              LaMonte Koop
  2117.                       1001 Summit Ave. North  #125
  2118.                          Sauk Rapids, MN  56379
  2119.  
  2120.    As for me, well, I'm an Electrical/Computer Engineering student
  2121. ( currently just a wee bit from done )  with an added major in Physics,
  2122. and an emphasis in systems architecture design.  AIBB was originally
  2123. started as a bit of a hobby, and as time went on became a long-standing
  2124. project.  This particular version is almost a year in the making, and I
  2125. do intend to continue enhancing the package as long as interest remains in
  2126. it.  Enjoy the program; I hope you find it useful, and that it serves
  2127. whatever purpose you may need of it.
  2128.  
  2129.